在XPATH查询中返回引用的元素

时间:2016-04-09 18:37:11

标签: xml xpath idref

假设我有以下要素:

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

因为Jon是Sean的老板,Sean是Jerry的老板,而Sean也是如此。 我知道如果我写id(//worker/@boss)我会得到John,Sean和Jerry,所以我想在这个小组中再次使用相同的逻辑,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

表达式的两个步骤递归应该给出你需要的结果

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

返回

Text='jon'
Text='sean'