xsl:strip-space

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 6.)

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

 

Die xsl:strip-space-Deklaration wird verwendet, um festzulegen, innerhalb welcher Elemente Whitespace-Nodes entfernt werden, sodass diese nicht ins Ergebnisdokument kopiert werden.

Klassifizierung Deklaration
Funktionsgruppe Regulierung von Weißraum
Einführung XSLT 1.0

Position im Stylesheet und erlaubte Inhalte:

xsl:strip-space tritt als Deklaration nur als unmittelbares Child-Element der Wurzelelemente xsl:stylesheet oder xsl:transform auf. Das Element ist dabei stets leer.

Attribute:

Es gelten die Standardattribute. Daneben besitzt xsl:strip-space ein obligatorisches Attribut elements.

elements

Wert

tokens

Verwendung

obligatorisch

Einführung

XSLT 1.0

Das elements-Attribut nennt in Form einer durch Leerzeichen getrennten Tokenliste die Bezeichner derjenigen Elemente, für deren Inhalt Whitespace-Nodes entfernt werden sollen. Zusätzlich oder alternativ zu expliziten Bezeichnern dürfen auch Wildcards wie "*" oder "mein-ns:*" verwendet werden.

Verwendungszweck:

Die Anweisung xsl:strip-space entfernt Whitespace-Nodes im Inhalt derjenigen Elemente, die in seiner Tokenliste ent­halten sind. Unter Whitespace-Nodes sind Textnodes zu verstehen, die aus­schließlich aus Leerzeichen, Zeilenumbruchsbefehl, Wagenrücklauf oder Tabu­lator bestehen.

Whitespace-Nodes können daher nur zwischen Elementen auftreten, nicht etwa angrenzend an Textknoten, da sie diesen sonst zugeschlagen werden. Fol­gen aus Whitespace-Zeichen am Anfang oder Ende von Textknoten zählen zum »signifikanten« Weißraum und werden weder von xsl:strip-space oder xsl:preserve-space beachtet. Sie können allenfalls Gegenstand einer Nor­malisierung werden.

Dem Defaultverhalten des XSLT-Prozessors entspricht die Beibehaltung von Whitespace-Nodes im Output. Mit xsl:strip-space kann gezielt für einige oder auch global für alle Elemente die Entfernung derartiger Whitespace-Nodes veranlasst werden.

Beispielsweise ordnet elements="*" die Entfernung von Whitespace-Nodes in allen Elementen ungeachtet ihres Namens an. Einer solchen globalen Deklara­tion kann mit xsl:preserve-space gezielt für bestimmte Elemente gegenge­steuert werden (siehe Beispiel).

Beispiel - Anwendung von xsl:preserve-space und xsl:strip-space:

Quelldokument (Ausschnitt):

<beispiel>Dies ist ein <strong>einfaches</strong> <emph>Beispiel</emph> für gemischten Inhalt.</beispiel>

Stylesheet:

...
<xsl:strip-space elements="*"/>
<xsl:preserve-space elements="beispiel"/>
...
<xsl:template match="beispiel">
  <p><xsl:apply-templa­tes/></p>
</xsl:template>
  

Ergebnis:

Ohne die Anwendung von xsl:preserve-space würde auch der – hier bedeu­tungstragende – Weißraum zwischen den Elementen innerhalb von elements und <beispiel> entfernt, da xsl:strip-space mit dem Wildcard-Selektor ele­ments="*" pauschal für alle Elemente gilt.

Die Ausgabe sähe so aus (hervorgehoben):

<p>Dies ist ein einfachesBeispiel f&uuml;r gemischten Inhalt.</p>

Wird durch xsl:preserve-space »gegengesteuert«, so erhält man wie gewünscht folgenden Output:

<p>Dies ist ein einfaches Beispiel f&uuml;r gemischten Inhalt.</p>

Elementdefinition:

XSLT 1.0:

<!-- Category: top-level-element -->
<xsl:strip-space 
     elements = tokens 
/>

XSLT 2.0:

<!-- Category: top-level-element -->
<xsl:strip-space
     elements = tokens 
/>
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