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 Entfer­nung 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 unge­straft 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 indi­rekt durch xsl:strip-space veranlasst wurde, für die spezifizierten Ele­mente.

   

<< 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