gpt4 book ai didi

xpath - XPath将元素与属性的最大值匹配

转载 作者:行者123 更新时间:2023-12-03 15:56:22 26 4
gpt4 key购买 nike

<?xml version="1.0" encoding="ISO-8859-1"?>

<users>

<user number="0775547857">
<step stepnumber="1">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>


给定一个数字,我想在步骤列表中找到最大的步骤数。

到目前为止,我所得到的是 //user[@number='0775547857']/step[@stepnumber]

而且我认为我必须使用fn:max函数,但是在如何使用max函数传递步骤号列表时遇到了麻烦。

示例:如果我给出数字 0775547857,则最大步数为 3,对于 0775543754,最大步数为 2,依此类推。

非常感谢。

这样对吗?

//user[@number='0772243950']/step[fn:max((@stepnumber))]

最佳答案

max()函数仅在XPath 2.0及更高版本中定义。

一个XPath 2.0表达式可找到具有值stepuser属性的number子元素的$pNum的最大步数:

max(/*/user[@number=$pNum]/step/@stepnumber/xs:integer(.))


$pnum替换 0775547857并在以下XML文档上评估此XPath 2.0表达式:

<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


请注意:如果要以整数形式找到最大值,则必须使用上面的 xs:integer(.)。没有它,最大值将以字符串形式出现在值上,而 3将大于 11

在XPath 1.0中,以下XPath表达式返回所需的最大值:

/*/user[@number=$pNum]/step
[not(@stepnumber
<
../step/@stepnumber
)
]
/@stepnumber

关于xpath - XPath将元素与属性的最大值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com