最大谓词的XPath表达式解决方法

Pau*_*ora 5 xml xpath

鉴于此XML:

<foos>
    <foo>
        <name>Apple</name>
        <rank>1</rank>
        <key>asdfasdfasdf</key>
    </foo>
    <foo>
        <name>Orange</name>
        <rank>3</rank>
        <key>qwerqwtwetqw</key>
    </foo>
    <foo>
        <name>Apple</name>
        <rank>2</rank>
        <key>zxcvzxvcxzb</key>
    </foo>
    ...
</foos>
Run Code Online (Sandbox Code Playgroud)

我试图找到具有特定名称的foo的关键,让我们说"Apple",其中排名最高.我正在使用以下xpath表达式(缺少max函数的解决方法):

/foos/foo[name='Apple' and rank >= /foos/foo[name='Apple']/rank]/key/text()
Run Code Online (Sandbox Code Playgroud)

然而,我有时会得到多个结果,即使每个名称 - 等级组合都是唯一的.我在哪里错了?

这是在Java中使用 - 如果事实证明是相关的,我可以发布整个代码.

bis*_*314 2

尝试这个:

/foos/foo[name='Apple'][not(preceding-sibling::foo[name='Apple']/rank>./rank) and not(following-sibling::foo[name='Apple']/rank>./rank)]/key/text()
Run Code Online (Sandbox Code Playgroud)