Я пытаюсь идентифицировать все узлы в дереве, которые приводят к определенному узлу.альтернатива предку или себе (или выбрать все узлы в дереве с определенным дочерним узлом)
Я пытаюсь выполнить это через 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 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 должны выбрать узлы с идентификатором (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) на любой глубине.
альтернативное решение с точки зрения чего? новый парсер, другой xpath или другой язык программирования? –
@Jimmy, любая альтернатива, кроме изменения технологий, поскольку проект уже выполняется. –
Какую версию XMLDocument вы используете в классической части ASP реализации? –