以下xpath似乎不起作用:
//FullName[sum(string-length(FirstName) | string-length(LastName))>= 30]错误:表达式的计算结果必须为节点集。
XML代码片段
<FullName>
<FirstName>somereallylongfirstnameguy</FirstName>
<LastName>somereallylonglasttnameguyabcdefghijklmnopqrstuv</LastName>
</FullName>我知道sum函数将数字相加,而string length返回数字。
以下表达式可以很好地工作:
//FullName[string-length(FirstName) >= 1]任何帮助都将不胜感激。
发布于 2011-10-20 05:33:18
您尝试为string-length()调用提供的sum()函数expects a node-set,但失败了。在这里,sum()似乎不是合适的函数。
您可以直接在谓词中将长度相加:
//FullName[string-length(FirstName)+string-length(LastName) >= 30] 或者,您可以先使用连接,然后获取长度:
//FullName[string-length(concat(FirstName,LastName)) >= 30] 或者,如果您的代码片段代表所有FullName元素,则只需考虑上下文节点的所有文本节点内容的长度,如下所示:
//FullName[string-length() >= 30] 发布于 2011-10-20 20:50:48
如果名称的数量可以变化(如中间首字母、后缀、后缀等),通常不可能使用单个XPath 1.0表达式获得所需的总和。
XPath 2.0中的 this is possible
//FullName[sum(*/stringlength()) ge 30]https://stackoverflow.com/questions/7828091
复制相似问题