2016-04-09 15 views
1

nehme ich die folgenden Elemente:Rückkehr referenzierte Elemente in XPath-Abfrage

<?xml version="1.0"?> 
<!DOCTYPE factory[ 
<!ELEMENT factorry (worker)+> 
<!ELEMENT worker (#PCDATA)> 
<!ATTLIST worker id ID #REQUIRED 
       boss IDREF #IMPLIED> 
]> 
<factory> 
    <worker id="i1"> jon </worker> 
    <worker id="i2" boss="i1"> sean </worker> 
    <worker id="i3" boss="i2"> jerry </worker> 
    <worker id="i4" boss="i3"> berry </worker> 
</factory> 

Jetzt möchte ich XPath-Abfrage schreiben, die mir die Bosse der Bosse alles geben, so in diesem Beispiel ich das Ergebnis wollen sein:

<worker id="i1"> jon < /worker> 
<worker id="i2" boss="i1"> sean </worker> 

Weil Jon Seans Chef ist, und Sean ist Jerrys Chef, und die gleiche Logik für Sean.
Ich weiß, wenn ich schreibe id(//worker/@boss) bekomme ich John, Sean und Jerry, also möchte ich die gleiche Logik wieder auf diese Gruppe anwenden, aber ich weiß nicht, wie es geht.

Antwort

1

Zwei Schritte recursiton des Ausdrucks sollte das Ergebnis, das Sie brauchen

//worker[@id=//worker[@id=//worker/@boss]/@boss]/text() 

kehrt

Text='jon' 
Text='sean' 
+0

Danke, aber warum die Abfrage // Arbeiter [id (Chef)/id (Chef)] geben funktioniert nicht? – sel

+0

das ist kein XPath. ich kenne diese Sprache nicht – splash58

Verwandte Themen