没有子节点的节点的XPath的string-length()

时间:2019-03-04 13:04:00

标签: xml xpath xpath-1.0

我需要一个单行的XPath 1.0表达式来计算节点的长度,但要排除任何子节点(如果存在)中的文本。

例如,

的string-length()
<node>This is text</node>

为12(可以),但string-length()为

<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 :(得分:1)

XPath 1.0

仅XPath 1.0不能仅提供元素的文本节点子代的字符计数。您还必须使用托管XPath库的语言的功能。

XPath 2.0及更高版本

此XPath(首先由@MartinHonnen in comments发布)

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

将根据要求提供/node的所有文本节点子代的字符计数。

另请参见

答案 1 :(得分:0)

使用此希望将运行1.0:

string-length(//node)