我有以下 XML:
<data>
<page id="1118">
<itms>
<values>
<value>1104</value>
</values>
</itms>
</page>
<page id="1177">
<itms>
<values>
<value>1273</value>
<value>1215</value>
</values>
</itms>
</page>
</data>
我需要从 < page > 获取 @id,其中 < value > 标签之一中存在某个值。
这意味着如果我的 $itm/@id 等于 1273,我需要返回 1177。我不太确定如何实现这一目标。
实际上我也可以使用如下所示的 XML:
<data>
<page id="1118">
<itms>
<values>
<value>1104</value>
</values>
</itms>
</page>
<page id="1177">
<itms>
<values>
<value>1273</value>
<value>1215</value>
</values>
</itms>
</page>
<page id="1352">
<itms>
<values>
<value>1242</value>
<value>1273</value>
</values>
</itms>
</page>
</data>
如果是这样的话,我需要最新的 id,所以这意味着如果 $itm/@id 与更多 < page > 中的值匹配,那么我需要从最新页面获取该值。在上述情况下,这将是 1352。
希望这对你们来说有意义。顺便说一句,如果这有什么区别的话,我会使用 Umbraco CMS。
最诚挚的问候, 金姆
最佳答案
你可以使用这个
(/data/page[itms/values/value = 1273])[last()]/@id
甚至这个
(//value[.=1273])[last()]/ancestor::page[1]/@id
关于xml - XSLT:获取存在某一特定值的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551736/