XSLT definiert eine Reihe von Elementen, die im XSLT-Namensraum [2] angesiedelt sind:
http://www.w3.org/1999/XSL/Transform
Ein Stylesheet besteht dabei aus einem stylesheet
-Element, welches eine Reihe von sog. Toplevel-Elementen enthält (Elemente, die direkte Kinder des stylesheet-Elements sind), welche weitere spezielle Elemente enthalten können.
Die Reihenfolge dieser Toplevel-Elemente spielt dabei grundsätzlich keine Rolle (mit Ausnahme des import
-Elements, siehe dort).
Elemente, die nicht dem XSL-Namensraum angehören, werden vom Prozessor nicht weiter beachtet (mehr dazu beim xsl:template-Element).
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:ein-toplevel-element> <kein-xslt-element> <xsl:weitere elemente/> </kein-xslt-element> </xsl:ein-toplevel-element> </xsl:stylesheet>
Das version
-Attribut ist dabei unbedingt erforderlich, um die verwendete XSLT-Version zu kennzeichnen.
(Alternativ zu stylesheet
kann auch transform
verwendet werden; diese Elemente sind äquivalent.)
include import |
Verknüpfen verschiedener Stylesheets |
preserve-space elements strip-space elements |
Behandlung des Quellbaumes |
template param variable |
Templates |
namespace-alias attribute-set key decimal-format |
Angaben für spezielle Transformationen |
output | Steuerung der Ausgabe |
Es gibt zwei Möglichkeiten, mehrere Stylesheets zu kombinieren: include
und import
<xsl:include href="style1.xml"/> <xsl:import href="style2.xml"/>
Während ein include
-Element einfach durch den Inhalt der angegebenen Datei ersetzt wird (wie C #include), werden durch import
verknüpfte Stylesheets hierarchisch angeordnet. Ausschlaggebend ist dabei die Reihenfolge ihrer Einbindung.
Ein Beispiel für import
:
style1.xml | style2.xml | style3.xml |
---|---|---|
...<xsl:import href="style2.xml"/> ... |
...<xsl:import href="style4.xml"/> ... |
...<xsl:import href="style6.xml"/> ... |
Die Import-Hierarchie dieser Stylesheets sieht wie folgt aus (höhere Priorität zuerst):
style1.xml style2.xml style4.xml style5.xml style3.xml style6.xml
Höchste Priorität hat der Inhalt von style1.xml, gefolgt vom Inhalt von style2.xml. Es folgen die von style2.xml importierten style4.xml und style5.xml in der Reihenfolge ihrer Einbindung und zum Schluß das nach style2.xml eingebundene style3.xml und style6.xml.
Diese Reihenfolge spielt dann eine Rolle, wenn konfliktierende Elemente gefunden werden (siehe dort).
Mehrfache Inklusion eines Stylesheets muß vom Prozessor als Fehler erkannt werden.
Standardmäßing werden vor der Transformation alle Textknoten entfernt , die nur Whitespace (Tabulatoren - 0x09, Zeilenumbrüche - 0x0a, Returns - 0x0d oder Leerzeichen - 0x20) enthalten. Um dies zu beeinflussen, können die folgenden Elemente verwendet werden:
<xsl:preserve-space elements="..."/> <xsl:strip-space elements="..."/>
Der Inhalt des elements
-Attributs ist eine Leerzeichengetrennte Liste von XPath-Mustern [6]. Elemente, auf die eines dieser Muster zutrifft, werden dann jeweils als "preserve-space" oder "strip-space" eingestuft.