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>

ジョンはショーンの上司であり、ショーンはジェリーの上司であり、ショーンについても同じ論理です。
私が書くid(//worker/@boss)と、ジョン、ショーン、ジェリーが得られることはわかっているので、このグループに同じロジックをもう一度適用したいのですが、その方法がわかりません。

4

1 に答える 1

1

式の 2 ステップの再帰により、必要な結果が得られるはずです

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

戻り値

Text='jon'
Text='sean'
于 2016-04-09T20:53:06.660 に答える