Количество указывает c пунктуация в теге с использованием Xpath - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь подсчитать количество двоеточия, за которым следует пробел в теге "report":

<report>But that doesn't work either: what do you guys think: To be solved</report>

Мой код xpath

`report[count([text()=": "]) &gt; 1]`

, но это не работает

1 Ответ

0 голосов
/ 11 апреля 2020

Чтобы завершить решение XPath 2.0, предоставляемое @Slkrasnodar, вот решение XPath 1.0:

string-length(//report)-string-length(translate(//report,":",""))

Мы проверяем длину исходной строки. Затем мы генерируем строку без двоеточия и проверяем ее длину. Наконец, мы вычтем эту длину из исходной строки длины, чтобы получить результат.

Вывод: 2

РЕДАКТИРОВАТЬ: Пожалуйста, исправьте файл XML. Содержит закрытые теги. Я работал с:

<authors>
<author>
<gnm>Lee</gnm>
<snm>Auch</snm>
</author>
<report>Search Results: Count the number of words in a xml node using xsl: Thank you</report>
</authors>

Чтобы получить имена авторов, у которых есть отчет, содержащий более одного двоеточия, используйте следующее выражение:

//authors[string-length(//report)-string-length(translate(//report,":",""))>1]//gnm/text()

Вывод: Lee

...