我有以下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>
我需要从&lt;中获取@id页面&gt;,其中某个值出现在其中一个&lt;值&gt; -tags。需要在&lt;中的id值&gt;保留在: $ itm / @ id 。
这意味着如果我的$ 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匹配更多的值&lt;页面&gt;的,然后我需要从最新页面获取值。我上面的情况是 1352 。
希望这对你们有意义。顺便说一句,如果有任何不同,我会与Umbraco CMS合作。
最诚挚的问候, 金
答案 0 :(得分:3)
您可以使用此
(/data/page[itms/values/value = 1273])[last()]/@id
甚至是
(//value[.=1273])[last()]/ancestor::page[1]/@id
答案 1 :(得分:2)
类似于page[itms/values/value=$itm/@id][last()]/@id
。
答案 2 :(得分:1)
我的版本:/ data / page [itms / values / value / text()= $ itm / @ id] [last()] / @ id