我正在尝试识别树中通向特定节点的所有节点。
我正在尝试通过 MSSQL XML (2005) 或 ASP 经典中的 Microsoft.XMLDOM 来完成此操作。
我知道 XPATH 的逻辑,但 SQL Server 不支持ancestor-or-self
轴,并且 XMLDOM 似乎在::
符号上窒息..
当我在 XPATH 测试器中测试它时起作用的 xpath 是
//static[@id=6]/ancestor-or-self::static
我的 XML(在 sql server 中递归生成)看起来像
<root>
<static id="1" title="some title 1" />
<static id="2" title="some title 2">
<children>
<static id="3" title="some title 3" />
<static id="4" title="some title 4">
<children>
<static id="5" title="some title 5" />
<static id="6" title="some title 6" />
</children>
</static>
</children>
</static>
<static id="7" title="some title 7" />
</root>
XPATH 应该以任何顺序选择具有 id (2,4,6) 的节点,所以我可以为所有节点添加一个属性..
这是一个菜单系统,我只知道选定的叶子,并且需要将所有指向它的节点标记为hilited。
我将不胜感激任何克服 XMLDOM 窒息的帮助(运行xml.documentElement.selectNodes("//static[@id=6]/ancestor-or-self::static")
会产生以下错误Expected token 'eof' found ':'. //static[@id=6]/ancestor-or-self-->:<--:static
:)
或寻找替代解决方案。也许在任何深度找到包含特定节点(id = 6)的所有节点..