XPath – Filtern von Sequenzen

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 2.)

Der Verarbeitungsablauf einer XSLT-Transformation ist unmittelbar abhängig von der Zusammensetzung der zur Verarbeitung anstehenden Sequenz. Eine Sequenz wird, wie im vorigen Kapitel gezeigt, durch einen Pfadausdruck zusammengestellt. Eine Zusammenstellung findet in der Regel im Rahmen der Verarbeitung von Instruktionen wie xsl:apply-templates statt, aber auch in Instruktionen, die unmittelbar Sequenzen ausgeben, wie xsl:value-of.

Ein Pfadausdruck setzt sich dabei aus einer Folge von Location Steps zusammen. Jeder Schritt erfolgt entlang einer Achsenrichtung und erzeugt eine Ergebnissequenz, deren Knoten jeweils Ausgangspunkt der folgenden Schritte werden. Hat daher der erste Schritt eine Ergebnismenge von drei Knoten, so teilt sich der Pfadausdruck für den folgenden Schritt in drei Zweige.

Der Pfadausdruck ist dabei »umfassend«, seine endgültige Ergebnissequenz beinhaltet daher alle Knoten der Ergebnismenge des letzten Schritts (bzw. der »Schritt-Instanzen«, deren Anzahl wieder von der Ergebnismenge des Schritts davor abhängt). Es ist, da diese Menge sehr groß werden kann und auch Knoten enthalten mag, die im Endeffekt nicht verarbeitet werden, sehr wichtig, frühzeitig Filterbedingungen setzen zu können – und zwar bereits für jeden Zwischenschritt einzeln.

Das Beispieldokument – ein Buchkatalog

Das Dokument, anhand dessen in Folge einige Grundkonzepte gezeigt werden, setzt sich zusammen aus einer Reihe von <buch>-Elementen, die Attribute ersch-jahr und kat besitzen. Das Attribut kat ist in der DTD mit einem Default-Wert "edv" versehen:

<!ATTLIST buch 
ersch-jahr CDATA #IMPLIED
kat CDATA "edv">

Code-Beispiel: kap02/2.01/buchhandel.dtd.

Bei den meisten Buch-Elementen ist dieses Attribut in der Datei nicht explizit genannt, wird aber durch den XML-Parser eingefügt. Die restlichen Informati­onen stehen in Child-Elementen. Das <preis>-Element besitzt ein Attribut waehrung, das die Währung anzeigt. Default-Wert (ebenfalls per DTD) ist "Euro". Für einige Bücher ist dieser mit dem Wert "Dollar" überschrieben.

<buchhandel>
  <!-- mehr Bücher -->
  <buch ersch-jahr="1996">
    <buchtitel>Where Wizards Stay Up Late</buchtitel>
    <buchautor>Hafner, Katie</buchautor>
    <buchautor>Lyon, Matthew</buchautor>
    <buchverlag>Touchstone</buchverlag>
    <preis waehrung="Dollar">14.00</preis>
  </buch>
  <buch ersch-jahr="1950" kat="tiere">
    <buchtitel>Unter Korallen und Haien</buchtitel>
    <buchautor>Hass, Hans </buchautor>
    <buchverlag>Ozean Verlag</buchverlag>
    <preis waehrung="Euro">37.95</preis>
  </buch>
  <!-- mehr Bücher -->
</buchhandel>

Code-Beispiel: kap02/2.01/buchhandel.xml.

Es ist nun auf dem bereits bekannten Wege verhältnismäßig einfach, die Verar­beitung pauschal aller <buch>-Elemente des Dokuments zu veranlassen. Ange­nommen jedoch, dies soll genau nicht geschehen, so sollten die unerwünsch­ten Buchdatensätze bereits bei der Zusammenstellung der Sequenz ausgefiltert werden. Dies geschieht innerhalb des Pfadausdrucks.

   

   

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