特定のノードにつながるツリー内のすべてのノードを識別しようとしています。
MSSQL XML (2005) または ASP クラシックの Microsoft.XMLDOM を使用してこれを達成しようとしています。
XPATH のロジックは知っていますが、SQL Server はancestor-or-self
軸をサポートしておらず、XMLDOM は::
表記法で詰まるようです。
XPATHテスターでテストするときに機能するxpathは
//static[@id=6]/ancestor-or-self::static
私のXML(SQLサーバーで再帰的に生成された)は次のようになります
<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) のノードを選択する必要があるため、それらすべてに属性を追加できます。
これは、選択したリーフのみを知っているメニュー システム用であり、それにつながるすべてのノードをハイライトとしてマークする必要があります。
XMLDOM のチョークを克服するための支援をいただければ幸いです (実行xml.documentElement.selectNodes("//static[@id=6]/ancestor-or-self::static")
すると次のエラーが生成Expected token 'eof' found ':'. //static[@id=6]/ancestor-or-self-->:<--:static
されます:) 。
または代替ソリューションを見つけることで。任意の深さで特定のノード (id = 6 ) を含むすべてのノードを見つける可能性があります..