Запрос Xpath для выбора узла, когда атрибут не существует?

Я хочу выбрать узлы, для которых не существует определенного атрибута. Я пробовал функцию Not(), но она не работает. Есть ли способ для этого?

Пример: следующий запрос Xpath:

group/msg[not(@owner)]

Должен получить первый узел, но не второй. Однако и SketchPath (инструмент для тестирования запросов Xpath), и мой код C# считают, что 2 узла в порядке.

<group>
    <msg id="EVENTDATA_CCFLOADED_XMLCONTEXT"  numericId="14026"  translate="False"  topicId="302"  status="translated" >
        <text>Context</text>
        <comment></comment>
    </msg>
    <msg id="EVENTDATA_CCFLOADED_XMLCONTEXT_HELP"  numericId="14027"  translate="False"  topicId="302"  status="translated"  owner="EVENTDATA_CCFLOADED_XMLCONTEXT" >
        <text>Provides the new data displayed in the Object.</text>
        <comment></comment>
    </msg>
</group>

На самом деле функция Not() работает корректно, просто у меня были другие условия и не правильно расставлены скобки. ошибка человека.


person Antoine    schedule 12.12.2008    source источник
comment
Если да, пожалуйста, ЗАКРЫТЬ вопрос - он вводит в заблуждение и отнимает много времени у других людей.   -  person Dimitre Novatchev    schedule 12.12.2008
comment
Я закрыл вопрос как неактуальный, если вы не возражаете.   -  person PhiLho    schedule 12.12.2008
comment
group/msg[not(@owner) or @otherAttribute="true"] у вас не работает?   -  person CARLOS LOTH    schedule 18.03.2012
comment
Для полного и правильного ответа без отвлечения ложного предупреждения, вызванного этим вопросом, см. XPath для элементов с атрибутом, не равным или не существующим   -  person kjhughes    schedule 26.09.2017


Ответы (2)


В каком-то старом и не очень стандартном движке XPath мне пришлось использовать string-length(@attr)=0 по той же причине.

person Jonas Elfström    schedule 12.12.2008

У меня работает при тестировании с помощью XPath Explorer (на основе библиотека Jaxen).
Так что я думаю, что это действительно зависит от реализации XPath.

person PhiLho    schedule 12.12.2008
comment
Да, я научился трюку с XPath, по крайней мере... :-) - person PhiLho; 12.12.2008