У меня возникают серьезные проблемы, пытаясь понять магию, которая является XPath.Как игнорировать пространства имен в XPath 1.0?
В принципе, у меня есть некоторые XML следующим образом:
<a>
<b>
<c/>
</b>
</a>
Теперь я хочу, чтобы подсчитать, сколько Б мы имеем, не Кассиопеяне. Это можно легко сделать с помощью следующего XPath:
count(*/b[not(descendant::c)])
Теперь вопрос это просто: Как сделать то же самое, игнорируя при этом каких-либо пространств имен?
Я бы предположил, что это было что-то вроде этого?
count(*/[local-name()='b']/[not(descendant::[local-name()='c'])])
Но это неверно. Каким будет эквивалент XPath, как я уже говорил, но который игнорирует пространства имен?
Если вы задаете вопрос о XPath 1.0, пожалуйста, проясните это в своем вопросе. В XPath 2.0 и 3.0 вы можете написать *: c для выбора элементов с локальным именем c в любом пространстве имен. –
OP действительно задал вопрос явно как xpath-1.0, но я, вероятно, должен был представить это в названии, которое я сделал. Исправлено. – kjhughes
Хорошо, что я плохой. Я предположил, что этого достаточно, чтобы пометить тему как xpath-1.0. Я обязательно добавлю это к теме в следующий раз. – Kahn