我有下面的XML:XSLT 1.0:行走並過濾樹向後
<things>
<thing name="Foo" available="yes"/>
<thing name="Bar" available="no"/>
<thing name="Baz" available="yes">
<parent name="Foo"/>
<parent name="Bar"/>
</thing>
<thing name="Qux" available="no">
<parent name="Foo"/>
<parent name="Bar"/>
</thing>
<thing name="Waldo" available="yes">
<parent name="Foo"/>
<parent name="Bar"/>
<parent name="Baz"/>
<parent name="Qux"/>
</thing>
</things>
這代表如下所示的結構:
- 富
- 巴茲
- 沃爾多
- Qux
- 金都
- 金都
- 巴茲
- 酒吧
- 巴茲
- 金都
- Qux
- 金都
- 金都
- 巴茲
實際的XML是相當大,嵌套深。不可改變的事情可以在任何地方。沒有循環(有自己作爲祖先的東西)。
現在我想要生成Waldo的所有可能路徑,過濾出包含不可用路徑的路徑。像下面這樣的結果的東西就是我在尋找:
<ul>
<li>
<a href="#Foo">Foo</a>
<ul>
<li>
<a href="#Baz">Baz</a>
<ul>
<li>
<b>Waldo</b>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>
<a href="#Foo">Foo</a>
<ul>
<li>
<b>Waldo</b>
</li>
</ul>
</li>
</ul>
即:
- 富
- 巴茲
- 金都
- 巴茲
- 富
- 金都
從葉節點開始,查找樹,產生所有可能的路徑而忽略不可用路徑讓我難住了。任何見解,散文,僞代碼或XSLT都非常感謝!
矛盾:根據XMl,waldo不是巴茲的孩子 - 請編輯問題並更正。 – 2012-08-13 13:22:07