示例:尝试计算作为图像的b节点数。
XML:
<a>
<b mediatype='image/jpeg'>
<c>hello.jpg</c>
</b>
</a>
的XPath:
count(//b[substring(@mediatype, 0, 5) = 'image'])
使用Xpath测试程序:http://codebeautify.org/Xpath-Tester 评估为0.0
感谢答案,根据给出的信息以及使用start-with改进的XPath选择了最佳答案。
答案 0 :(得分:2)
在XPath中,索引从1开始。
count(//b[substring(@mediatype, 1, 5) = 'image'])
答案 1 :(得分:2)
似乎是需要为1的起始索引。
count(//b[substring(@mediatype, 1, 5) = 'image'])
以上xpath评估为1.0
答案 2 :(得分:2)
正如其他人指出的那样,最初的问题是xpath索引从1
而不是0
开始。
使用starts-with()
可以更方便地实现文本开头的子字符串 - 避免使用硬编码索引:
count(//b[starts-with(@mediatype,'image')])
答案 3 :(得分:1)
在XPath位置(对于列表和字符串)以1开头。
如果您尝试substring(//b/@mediatype, 0, 5)
,您将获得imag
。
所以你需要count(//b[substring(@mediatype, 1, 5) = 'image'])
但在这个特定情况下,我建议starts-with()
:
count(//b[starts-with(@mediatype, 'image/')])