Я пытаюсь определить все узлы в дереве, которые ведут к конкретному узлу.
Я пытаюсь выполнить это с помощью MSSQL XML (2005) или с помощью Microsoft.XMLDOM в ASP classic.
Я знаю логику с 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 должен выбирать узлы с идентификатором (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) на любой глубине.