XSLT: Syntax


... [ Seminar XML und Haskell ] ... [ XSLT ] ... [ XPath ] ...

Übersicht: Syntax


Aufbau eines Stylesheets

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

Nach oben

Toplevel-Elemente

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

Verknüpfung von Stylesheets

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="style3.xml"/>

...
...
<xsl:import href="style4.xml"/>
<xsl:import href="style5.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.

Nach oben

Behandlung des Quellbaumes

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.

Nach oben

... [ Seminar XML und Haskell ] ... [ XSLT ] ... [ XPath ] ...