Запрос 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 () работает правильно, просто у меня были другие условия, и круглые скобки были установлены неправильно. errare humanum est .

12.12.2008 14:45:13
Если это так, пожалуйста, ЗАКРЫТЬ вопрос - это вводит в заблуждение и отнимает много времени для других людей.
Dimitre Novatchev 12.12.2008 16:40:34
Я закрыл вопрос как «больше не актуален», если вы не возражаете.
PhiLho 12.12.2008 20:20:04
group/msg[not(@owner) or @otherAttribute="true"]у тебя не работает?
CARLOS LOTH 18.03.2012 12:20:35
Для полного и правильного ответа без отвлечения ложного оповещения, вызванного этим вопросом, см. XPath для элементов с атрибутом, который не равен или не существует
kjhughes 26.09.2017 13:32:01
2 ОТВЕТА

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

17
9.11.2011 08:24:29

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

1
12.12.2008 15:27:52
Да, я изучил трюк на XPath, по крайней мере ... :-)
PhiLho 12.12.2008 20:18:46