Knotenvergleiche verwenden

(Auszug aus "XSLT Kochbuch" von Sal Mangano)

Problem

Sie wollen Knoten identifizieren oder sie anhand ihrer Position in einem Dokument zueinander in Beziehung setzen.

Lösung

XPath 1.0

Nehmen Sie in diesen Beispielen an, dass $x und $y jeweils einen einzigen Knoten aus demselben Dokument enthalten. Rufen Sie sich außerdem ins Gedächtnis, dass Dokumentenreihenfolge die Folge bedeutet, in der Knoten innerhalb eines Dokuments auftauchen.

(: Test, ob es sich bei $x und $y um exakt denselben Knoten handelt. :)

generate-id($x) = generate-id($y)

(: Sie können auch die Tatsache ausnutzen, dass der |-Operator Duplikate entfernt. :)

count($x|$y) = 1

(: Test, ob $x in der Dokumentenreihenfolge vor $y kommt - beachten Sie, dass dies nicht funktioniert, wenn $x oder $y Attribute sind. :)

count($x/preceding::node( )) > count($y/preceding::node( )) or $x = $y/ancestor::node( )

(: Test, ob $x in der Dokumentenreihenfolge nach $y kommt - beachten Sie, dass dies nicht funktioniert, wenn $x oder $y Attribute sind. :)

count($x/following::node( )) < count($y/following::node( )) or $y = $x/ancestors::node( )

XPath 2.0

(: Test, ob es sich bei $x und $y um exakt denselben Knoten handelt. :)

$x is $y

(: Test, ob $x in der Dokumentenreihenfolge vor $y kommt. :)

$x << $y

(: Test, ob $x in der Dokumentenreihenfolge nach $y kommt. :)

$x >> $y

Diskussion

Die neuen XPath 2.0-Operatoren für Knotenvergleiche sind wahrscheinlich effizienter und sicherlich einfacher zu verstehen als ihre XPath 1.0-Gegenstücke. Falls Sie jedoch XSLT 2.0 verwenden, werden Ihnen nicht allzu viele Situationen begegnen, in denen diese Operatoren erforderlich sind. Es gibt viele Situationen, in denen Sie glauben, dass Sie << oder >> benötigen, während das Element xsl:for-each-group vorzuziehen ist. Beispiele finden Sie im Rezept for-each-group der Muench-Methode zur Gruppierung vorziehen.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2006 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT Kochbuch" 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.

O'Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de