Thomas J.S.: XPath-Beispiel für descendant-or-self und descendant

Beitrag lesen

Hallo,

Es geht also um den Kontextknoten :

Wenn der Kontextknoten den gleichen Namen hat wie die Nachfolgerknoten ,dann kommen bei diesen beiden Pfadausdrücken unterschiedliche Ergebnisse raus.

Ja. *

Hat der Kontextknoten eine andere Bezeichnung als seine Nachfolgerknoten, dann sind die Ergebnisse von descendant und descendant-or-self immer gleich.

Ist das so richtig ?

Ja. *

* =  und dann nein ;-)

Unsere Beispiele waren einfach um das Prinzip zu verstehen. Aber man kann mit XPath-Ausdrücken auch komplexere Test machen. Z.B wenn man auf Identität prüfen will:

<xsl:variable name="x" select="generate-id(/a/b/c[.='foo'])"/>
<xsl:template match="*">
<xsl:if test="descendant-or-self::*[generate-id(.)=$x]">

Aber im Grunde geht es immer darum welche Knoten bei solchen Test beachtet werden sollen: nur die Nachfahren oder bei Erfüllung einer Bedingung auch der Ausgansknoten selbst.

Grüße
Thomas