2016-04-09 2 views
1

Предположим, у меня есть следующие элементы:возврата ссылочные элементы в XPATH запроса

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

Теперь я хочу написать XPATH запрос, который даст мне все боссы боссов, так что в этом примере я хочу результат быть:

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

Потому что Джон является боссом Шона, и Шон босс Джерри, и та же логика для Шона.
Я знаю, что если я напишу id(//worker/@boss), я получу Джона, Шона и Джерри, поэтому я хочу применить ту же логику к этой группе, но я не знаю, как это сделать.

ответ

1

Два шага recursiton вашего выражения должны дать результат, что нужно

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

возвращает

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

Спасибо, но почему запрос // работник [идентификатор (босс)/идентификатор (босс)] не работает? – sel

+0

это не xpath. я не знаю этого языка – splash58

Смежные вопросы