XPath用于元素的数字索引顺序

时间:2018-10-09 20:03:52

标签: xml xpath indexing

有关以下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和子级数字索引的元素分配一个唯一值。

因此,第一个元素为“ m12345-1”,第二个元素为-2,依此类推。

不确定是否有我可以参考的索引常量,或者计数前面的兄弟姐妹是否是最好的方法。

我希望这将返回“ 2”,但它返回“ 1”:

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

谢谢!

1 个答案:

答案 0 :(得分:2)

您是说这个意思吗

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

只需将谓词[@view="side"]替换为[@view="top"]以获得索引1或将[@view="bottom"]替换为获取3