对于以下 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/