XPath 3.0, XPath 2.0, XPath 1.0 / XPath-Achsen / preceding::*

preceding::*

preceding::*

XPath-Pfade und Achsen definieren den Verlauf, Umfang und Richtung, in dem die umgebenden Nodes abgearbeitet werden.

Analog dem following::*, erhalten wir bei preceding::* sämtliche Nodes und deren Childnodes, die dem adressierten Node /Orte/Ort[2]/Mensch[2] vorausgehen.

pic/XPath_preceding.jpg


 <xsl:template match="/">
  <ergebnis>
   <xsl:for-each 
        select="/Orte/Ort[2]/Mensch[2]
                /preceding::*">
    <e nr="{position()}">
     <xsl:call-template 
          name="generateXPath"/>
    </e>
   </xsl:for-each>
  </ergebnis>
 </xsl:template>

Je nach Umfang des Gesamtdokuments und nach Adressierung des aktuellen Nodes kann der Output sehr umfangreich sein. Erfaßt wird jeder vorhergehende Node mit all seinen Childnodes, unabhängig von dem jeweiligen Namen. Möchten wir dagegen nur die vorhergehenden Nodes eines bestimmten Namens ansprechen (also z.B. "Mensch", sämtliche anderen Nodes jedoch ignorieren, so lautet der Ausdruck:


<xsl:for-each 
     select="/Orte/Ort[2]/Mensch[2]
             /preceding::Mensch">
...
</xsl:for-each>

Dann erhalten wir auch nur die angesprochenen Nodes "Mensch" ohne deren Parent- oder Childnodes. Das Ergebnis erinnert an "preceding-sibling::Mensch", ist aber doch anders.

pic/XPath_preceding_Mensch.png

wg / 7. Januar 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf:

Vorname
Nachname
Mailadresse





child::*



Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

Mobil: 0151. 750 360 61 * eMail: info2018@wilfried-grupe.de

www.wilfried-grupe.de/XPath_Achsen5.html