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«, ste­hen 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 – deut­lich 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 unterlie­gen müssen, ist die weiter oben angeführte Tatsache ein guter Grund, die Attri­butknoten im Baum zu unterschlagen und auf eine eigene, im Baum nicht sicht­bare 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 Posi­tion. Bei einem Attribut muss zusätzlich angeordnet werden, aus der norma­len 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 selbst­ständigen Location Step dar. Hier geht dies mit

<xsl:value-of select="@nachname"/>

bzw. mit:

<xsl:value-of select="@vorname"/>

Auch bei dem so ausgelesenen Wert handelt es sich um einen Stringwert.

Der erste Ausdruck erzeugt also im Ergebnisdokument einen Textknoten mit dem Inhalt »Meier«, der zweite einen mit »Peter«.

   

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