Vergleich beider Varianten
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 1.)
Stellt man beide Varianten der Template-Regel einander gegenüber, so scheint die Überlegenheit von XSLT 2.0 und XPath 2.0 gegenüber der Vorgängerversion auf der Hand zu liegen. Hier die abwärtskompatible Variante:
<!-- alte Methode (auch mit XSLT 1.0 zu verarbeiten): -->
<xsl:template match="anschrift">
<xsl:value-of select="strasse"/>
<xsl:text> </xsl:text>
<xsl:value-of select="nr"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="plz"/>
<xsl:text> </xsl:text>
<xsl:value-of select="ort"/>
</xsl:template>
Code-Beispiel: kap01/1.16.11/adressen.xsl (Auszug).
Eine funktional gleiche Template-Regel ist mit XPath 2.0 wesentlich kompakter formulierbar, kann aber von einem älteren Prozessor nicht verarbeitet werden:
<!-- neue Methode (nur in XSLT 2.0 einsetzbar): -->
<xsl:template match="anschrift">
<xsl:value-of select="(strasse, nr, ',', plz, ort)"/>
</xsl:template>
Code-Beispiel: kap01/1.16.11/adressen-xpath2.xsl (Auszug).
Welche Herangehensweise Sie als intuitiver empfinden, ist Geschmacksache. Im zweiten Fall wird die Arbeit eigentlich von XPath übernommen. Einen XPath-Ausdruck können Sie, was noch öfter zu sehen sein wird, funktional durchaus gleichwertig zu XSLT-Instruktionen verwenden. Auch Literale, die man nach alter Methode als Textliterale oder in xsl:text realisiert, werden klammheimlich als Teil der XPath-Sequenz übergeben. Der erforderliche Quelltext ist hier deshalb um Faktor vier verkürzt. (Anmerkung: Im Mittel dürfte die Einsparung derart groß nicht sein. Realistischer mögen rund 30% weniger Quelltext beim Ersatz von XSLT 1.0/XPath 1.0-Konstruktionen durch entsprechend gleichwertige aus XSLT 2.0 bzw. XPath 2.0 sein.)
Auch wenn XSLT-Instruktionen durch XPath-Ausdrücke quasi ersetzt werden können, so hat dies seinen Preis. Auf die Problematik einer Modifikation eines allein durch XPath erzielten Ergebnisses wurde oben bereits hingewiesen. So könnten beispielsweise in der ersten Template-Variante zusätzlich benötigte Elemente in Form von Literal Result Elements einfach eingefügt werden. Dies kann, da ein XSLT-Stylesheet im Grunde ein normales XML-Dokument darstellt, auch mittels XSLT selbst erfolgen: Dies ist der Vorteil der »wortreicheren« XSLT-orientierten Vorgehensweise.
Ein XPath-Ausdruck hingegen hat String-Charakter. Er kann zwar gegebenenfalls ebenso, auch mittels XSLT, bearbeitet und modifiziert werden, jedoch erfordert dies wesentlich mehr Aufwand. Im Gegenzug können Stylesheets, die sich komplexerer XPath-Ausdrücke bedienen, sehr viel kompakter ausfallen.
<< 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