XPath's string-length () узла без его дочерних элементов - PullRequest
0 голосов
/ 04 марта 2019

Мне нужно однострочное выражение XPath 1.0 для вычисления длины узла, но исключая текст в любых дочерних узлах (если они присутствуют).

Например, string-length () из

<node>This is text</node>

равно 12 (нормально), но длина строки ()

<node>This is<any>any text</any> text</node>
<node>This <any>any text</any>is text</node>

больше 12 (не нормально).

Я не могу использоватьstring-length(//node/text()), поскольку он занимает первый фрагмент текста внутри node, если внутри node.

есть дочерние узлы.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

XPath 1.0

Только XPath 1.0 не может обеспечить счетчик символов только дочерних элементов текстового узла элемента.Вам также придется использовать возможности языка, на котором размещена библиотека XPath.

XPath 2.0 и выше

Этот XPath (впервые опубликованный @MartinHonnen в комментариях ),

sum(/node/text()/string-length())

предоставит количество символов для всех дочерних узлов текстового узла /node, в соответствии с запросом.

См. Также

0 голосов
/ 04 марта 2019

Используйте эту надежду, будет работать на 1,0:

string-length(//node)
...