Verwendung der Attributachse
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 1.)
Wären Attributwerte Teil des Stringwertes eines Elements, so würde das in der Tat ein Problem ergeben. Es wäre nicht festgelegt, in welcher Reihenfolge die Attribute ausgelesen würden: Attribute sind per Definition »ungeordnet«, stehen also außerhalb der Dokumentreihenfolge.
Es ist gebräuchlich, die Attribute so zu betrachten, als hätten sie tatsächlich die im Quelltext vorgegebene Reihenfolge. Verlässlich ist dies jedoch nicht – deutlich beispielsweise im Fall von Attributen, die vom XML-Parser als Default-Werte anhand einer DTD oder eines Schemas eingefügt wurden.
Somit ist es zwar möglich, eine Sequenz aller Attributwerte eines Elements zu bilden. Welche der beiden Zweiersequenzen im vorherigen Beispiel zurückgegeben würde, (Meier, Peter) oder (Peter, Meier), lässt sich jedoch eigentlich nicht vorhersagen und unterliegt der Willkür des Prozessors.
Da die Knoten eines Dokumentbaums alle der Dokumentreihenfolge unterliegen müssen, ist die weiter oben angeführte Tatsache ein guter Grund, die Attributknoten im Baum zu unterschlagen und auf eine eigene, im Baum nicht sichtbare Attributachse (Anmerkung: Aus dem Baum hinaus zeigt neben der Attributachse auch die Namensraumachse, die allerdings in XPath 2.0 offiziell nicht mehr unterstützt wird.) zu verlagern. Dennoch »gehören« Attribute fest zu einem bestimmten Element, das deren Elternknoten darstellt.
Um das Element zu finden, genügt die Kenntnis über dessen Name und Position. Bei einem Attribut muss zusätzlich angeordnet werden, aus der normalen Baumstruktur hinauszutreten. Hierzu muss mit einem Location Step auf die Attributachse gewechselt werden, was durch den Achsenbezeichner @ geschieht. Auch dieser Step ist wiederum auf den Kontext zu beziehen.
Liegt der Kontext für
<person nachname="Meier" vorname="Peter"/>
bereits auf dem Element <person>, so können von dort aus dessen Attribute einfach mit Hilfe eines Pfadausdrucks ausgelesen werden. Der Schritt von einem Elementknoten hin zu seinem Attributknoten stellt also einen selbstständigen Location Step dar. Hier geht dies mit
<xsl:value-of select="@nachname"/>
bzw. mit:
<xsl:value-of select="@vorname"/>
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