将元素与属性的最大值匹配的XPath
试试这个:将元素与属性的最大值匹配的XPath,xpath,Xpath,试试这个: fn:max(//user[@number='0775547857']/step[@stepnumber])函数仅在XPath 2.0及更高版本中定义 一个XPath 2.0表达式,用于查找具有值为$pNum的number属性的用户的步骤子级的最大步骤数: //user[@number='0772243950']/step[fn:max((@stepnumber))] <users> <user number="0775547857">
fn:max(//user[@number='0775547857']/step[@stepnumber])
函数仅在XPath 2.0及更高版本中定义
一个XPath 2.0表达式,用于查找具有值为$pNum
的number
属性的用户的步骤
子级的最大步骤数
:
//user[@number='0772243950']/step[fn:max((@stepnumber))]
<users>
<user number="0775547857">
<step stepnumber="1">complete</step>
<step stepnumber="11">complete</step>
<step stepnumber="2">complete</step>
<step stepnumber="3">complete</step>
</user>
<user number="0775543754">
<step stepnumber="1">complete</step>
<step stepnumber="2">complete</step>
</user>
<user number="0777743059">
<step stepnumber="1">complete</step>
</user>
</users>
11
用0775547857
替换$pnum
,并在以下XML文档上计算此XPath 2.0表达式:
max(/*/user[@number=$pNum]/step/@stepnumber/xs:integer(.))
请注意:如果我们想找到作为整数的最大值,必须使用上面的xs:integer(.)
。没有它,最大值将作为字符串出现在值上,3
将大于11
在XPath 1.0中,以下XPath表达式返回所需的最大值:
//user[@number='0772243950']/step[fn:max((@stepnumber))]
<users>
<user number="0775547857">
<step stepnumber="1">complete</step>
<step stepnumber="11">complete</step>
<step stepnumber="2">complete</step>
<step stepnumber="3">complete</step>
</user>
<user number="0775543754">
<step stepnumber="1">complete</step>
<step stepnumber="2">complete</step>
</user>
<user number="0777743059">
<step stepnumber="1">complete</step>
</user>
</users>
11
/*/user[@number=$pNum]/step
[不是(@stepnumber
<
../step/@stepnumber
)
]
/@步数
好问题(+1)。请参阅我的答案,以了解解释和单独的XPath2.0和XPath1.0解决方案。