Использование XPath count () с содержит () - PullRequest
5 голосов
/ 15 декабря 2011

Я работаю со следующим (неоптимальным) XML:

<a>
  <b>
    <c>X:1 Y:0</c>
    <c>X:1 Y:0</c>
    <c>X:2 Y:0</c>
  </b>
  <b>
    <c>X:1 Y:0</c>
    <c>X:2 Y:0</c>
  </b>
</a>

Я пытаюсь использовать XPath для подсчета количества <c> узлов, содержимое которых содержит X:1:

count(contains(/a/b/c, 'X:1'))

Однако это возвращает ошибку, а не возвращает ожидаемое количество 3.

Что я делаю не так?

Ответы [ 2 ]

8 голосов
/ 15 декабря 2011

Это не так, как вы используете contains(). Попробуйте

count(/a/b/c[contains(., 'X:1')])
3 голосов
/ 15 декабря 2011

Возможно, немного более эффективен (если свойство, представленное в предоставленном XML-документе, не случайно):

count(/a/b/c[starts-with(., 'X:1')])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...