Обходной путь выражения XPath для предиката max

Учитывая этот 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>

Я пытаюсь найти ключ foo с определенным именем, скажем «Apple», имеющим наивысший ранг. Я использую следующее выражение xpath (обходной путь из-за отсутствия функции max):

/foos/foo[name='Apple' and rank >= /foos/foo[name='Apple']/rank]/key/text()

Однако иногда я получаю несколько результатов, даже если каждая комбинация имени и ранга уникальна. В чем я ошибаюсь?

Это используется в Java - если это окажется актуальным, я могу опубликовать весь код.

5
задан Paul Bellora 1 February 2012 в 23:10
поделиться