XPath и XML: несколько пространств имен

Итак, у меня есть документ, который выглядит как

<a xmlns="uri1" xmlns:pre2="uri2">
 <b xmlns:pre3="uri3">
   <pre3:c>
     <stuff></stuff>
     <goes></goes>
     <here></here>
   </pre3:c>
   <pre3:d xmlns="uri4">
     <under></under>
     <the></the>
     <tree></tree>
   </pre3:d>
  </b>
</a>

. Мне нужно выражение xpath, которое даст мне <под> .

У этого есть namespaceURI uri4.

Сейчас мое выражение выглядит так:

//ns:a/ns:b/pre3:d/pre4:under

У меня есть менеджер пространств имен, добавляющий 'ns' для пространства имен по умолчанию (в данном случае uri1), и я определил его с pre2, pre3 и pre4 для uri2, uri3 и uri4 соответственно.

Я получаю ошибку "Выражение должно оцениваться как набор узлов . "

Я знаю, что узел существует. Я знаю, что все до pre4: under в моем xpath работает нормально, поскольку я без проблем использую его в остальной части документа. Дополнительный pre4: under вызывает ошибку, и я не уверен, почему.

Есть идеи?

Спасибо.

Решение:

Спасибо всем за вашу настойчивость что правильно - так и было. Но ... в моем коде у меня было «pre4» как «64» (переменная), и мне не нравилось целое число для префикса. Изменение его на "d" + myintvariable сработало.

5
задан emragins 1 March 2011 в 19:47
поделиться