1

假设我有以下元素:

<?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,所以我想在这个组上再次应用相同的逻辑,但我不知道该怎么做。

4

1 回答 1

1

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

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

返回

Text='jon'
Text='sean'
于 2016-04-09T20:53:06.660 回答