将元素与属性的最大值匹配的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解决方案。