Xpath, считать узел, где атрибут равен нулю - PullRequest
1 голос
/ 17 марта 2012

У меня есть следующий XML.

<root>
    <a>
    </a>
    <a b="ar34" >
    </a>
    <a c="utr45">
    </a>
</root>

Я хочу сделать подсчет, где атрибут "b" отсутствует.Я использую следующее, но не получаю счет

count(//*[string-length(a/@b) = 0]

Как я могу это сделать?Спасибо

1 Ответ

8 голосов
/ 17 марта 2012
count( //a[not(@b)] )

Вот подробное объяснение:

  1. Что ты хочешь считать? <a> тегов. Итак, вы начинаете с count( a )
  2. Где эти <a> теги? Везде в документе. Так что count( //a ) это тогда.
  3. Но вы хотите отфильтровать некоторые теги <a>, поэтому вы должны использовать предикат (бит в квадратных скобках): count( //a[ ... ] )
  4. Вы хотите считать только те теги, которые не имеют атрибута @b, поэтому вы ставите not(@b) в предикат. (Вы можете сделать это, потому что атрибут , интерпретируемый как логическое значение , имеет значение true, если атрибут присутствует, и значение false, если его нет.)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...