У меня есть простой XML-документ
<abc:MyForm xmlns:abc='http://myform.com'>
<abc:Forms>
<def:Form1 xmlns:def='http://decform.com'>
....
</def:Form1>
<ghi:Form2 xmlns:ghi='http://ghiform.com'>
....
</ghi:Form2>
</abc:Forms>
</abc:MyForm>
Я использую XMLObjects от Apache, и когда я пытаюсь выполнить следующее выражение xpath, оно отлично работает
object.selectPath("declare namespace abc='http://myform.com'
abc:Form/abc:Forms/*");
, это дает мне2 узла формы (def и ghi).Однако я хочу иметь возможность запрашивать, указав пространство имен, так что, скажем, я хочу только Form2.Я пробовал это, и это не удается
object.selectPath("declare namespace abc='http://myform.com'
abc:Form/abc:Forms/*
[namespace-uri() = 'http://ghiform.com']");
selectPath возвращает 0 узлов.Кто-нибудь знает, что происходит?
Обновление:
Если я сделаю следующее в 2 этапа, я смогу получить желаемый результат.
XmlObject forms = object.selectPath("declare namespace abc='http://myform.com'
abc:Form/abc:Forms")[0];
forms.selectPath("*[namespace-uri() = 'http://ghiform.com']");
это дает мне узел ghi: Form, как и должно быть, я не понимаю, почему он не делает это как одно выражение XPath.Спасибо