Sum String-Xpath的两个不同节点的长度 - Sum两个节点的字符串长度

时间:2011-10-19 21:02:39

标签: xml xpath string-length

嗨伙计以下xpath似乎不起作用。

//FullName[sum(string-length(FirstName) | string-length(LastName))>= 30]

错误:表达式必须求值为节点集。

XML代码段

<FullName>
 <FirstName>somereallylongfirstnameguy</FirstName>
 <LastName>somereallylonglasttnameguyabcdefghijklmnopqrstuv</LastName>
</FullName>

我知道sum函数将数字加在一起,字符串长度返回数字。

以下表达式可以正常工作:

//FullName[string-length(FirstName) >= 1]

任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:4)

sum()函数expects a node-set,您试图通过string-length()次调用提供,但失败了。 sum()似乎不是适当的功能。

您可以直接在谓词中添加长度:

//FullName[string-length(FirstName)+string-length(LastName) >= 30] 

或者您可以先使用连接,然后获取长度:

//FullName[string-length(concat(FirstName,LastName)) >= 30] 

或者,如果您的代码段代表所有FullName元素,则只需考虑上下文节点的所有文本节点内容的长度,如下所示:

//FullName[string-length() >= 30] 

答案 1 :(得分:2)

如果名称的数量可以变化(例如Middle Initil,orefix,suffix等...),通常无法使用单个XPath 1.0表达式获得所需的总和。

在XPath 2.0中,这是可能的

//FullName[sum(*/stringlength()) ge 30]