xml - 元素的数字索引顺序的 XPath

标签 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 from 和子项的数字索引的元素分配一个唯一值。

所以第一个元素是“m12345-1”,第二个是-2,依此类推。

不确定是否有我可以引用的索引常量,或者计算前面的 sibling 是否是最好的方法。

我希望这会返回“2”,但它返回“1”:
count(preceding-sibling:://media/medium[@view='side'])+1

提前致谢!

最佳答案

你是说这个吗:

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

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

关于xml - 元素的数字索引顺序的 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52728525/

相关文章:

vb.net - Google Chrome 提供的 XPath 不正确

python - 用 Python 解析 Google Earth KML 文件(lxml,命名空间)

xml - Golang XML 解析/解码

sql-server - SQL 使用 OpenXML 检索多个元素

javascript - 我想在 XPath 中使用先前设置的 javascript var。这可能吗?

多个值的 Javascript 索引

java - 如何在首选项 Activity 中显示应用程序版本?

java - Android Java动态按钮点击

mysql - 长时间运行的 MYSQL 查询、Frame Table 和 View with grouping

sql - 非聚集索引会增加什么样的开销?