XPath для числового индекса порядка элемента - PullRequest
0 голосов
/ 09 октября 2018

Для примера следующего XML:

<media id="m12345">
    <medium view="top" mimeType="image/png">
        <description>Top</description>
        <url>https://www.source.org/123</url>
    </medium>
    <medium view="side" mimeType="image/png">
        <description>Side</description>
        <url>https://www.source.org/234</url>
    </medium>
    <medium view="bottom" mimeType="image/png">
        <description>Bottom</description>
        <url>https://www.source.org/345</url>
    </medium>
</media>

Как бы я возвратил значение "2" для второго среднего элемента?

При анализе файла XML мне нужноназначить уникальное значение элементам, объединяющим @id from и числовой индекс дочерних элементов.

Таким образом, первый элемент будет "m12345-1", второй - -2 и т. д.

Не уверен, есть ли индексная константа, на которую я мог бы сослаться, или если подсчет предшествующих братьев и сестер был лучшим подходом.

Я надеялся, что это вернет "2", но оно вернет "1":

count(preceding-sibling:://media/medium[@view='side'])+1

Заранее спасибо!

1 Ответ

0 голосов
/ 09 октября 2018

Вы имели в виду это:

count(//media/medium[@view='side']/preceding-sibling::medium) + 1

Просто замените предикат [@view="side"] на [@view="top"], чтобы получить индекс 1 или [@view="bottom"], чтобы получить 3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...