Reservate für Leerraum: xsl:preserve-space
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 1.)
Die Deklaration xsl:strip-space besitzt einen Gegenspieler, der die Entfernung von Whitespace Nodes verhindern kann, in Form der Deklaration xsl:preserve-space. Diese wird nur dann benötigt, wenn auch xsl:strip-space eingesetzt wurde. Das Bewahren von Whitespace Nodes entspricht dem Default-Verhalten des Prozessors.
Auch für den eventuellen Konfliktfall ist gesorgt: Ordnet xsl:strip-space für ein Element die Entfernung von Whitespace an und widerruft xsl:preserve-space dies für dasselbe Element, so hat xsl:preserve-space den Vorrang – der Weißraum bleibt erhalten. Auch und besonders, wenn das Stripping global erfolgt, können mittels der Deklaration diejenigen Elemente herausgepickt werden, deren Weißraum erhalten bleiben soll. Im vorliegenden Fall wären das <name> und <anschrift>:
<!-- globales Whitespace-Stripping: -->
<xsl:strip-space elements="*"/>
<!-- Widerruf für zwei Elemente: -->
<xsl:preserve-space elements="name anschrift"/>
Die Reihenfolge der beiden Deklarationen spielt keine Rolle. Sie können ungestraft vertauscht werden, ohne dass dies Auswirkungen hätte.
Das Ergebnis sieht jetzt zwar im Quelltext nicht mehr so aufgeräumt aus, dafür jedoch wieder in der Darstellung des Browsers:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>XSLT 2.0 und XPath 2.0 - Adressenliste</title>
</head>
<body>
<h1>Adressenliste</h1>
<p>Name: <b>
Peter
Mustermann
</b><br />Anschrift:
12345
Beispielshausen
Wagenstr.
5a
</p>
...
</html>
Code-Beispiel: kap01/1.17.10/adressen.html.
Im vorliegenden Fall sollten Sie also, falls Sie wirklich saubereren Quelltext erzeugen möchten, die Template-Regeln überarbeiten. Da das Dokument aber primär zur Anzeige im Browser gedacht ist, ist das nicht weiter relevant.
Merkenswertes zu xsl:strip-space und xsl:preserve-space
- xsl:strip-space unterbindet für die in der Deklaration genannten Elemente das Kopieren von Whitespace Nodes.
- Das Whitespace-Stripping gilt jeweils für den gesamten Inhalt der Elemente, also auch für den Inhalt nicht explizit gelisteter Kindelemente.
- xsl:preserve-space widerruft das Whitespace-Stripping, das direkt oder indirekt durch xsl:strip-space veranlasst wurde, für die spezifizierten Elemente.
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Galileo Press, Rheinwerkallee 4, 53227 Bonn