2

我有以下 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 >-tags 中存在某个值。需要在 <value> 中的 id 保存在:$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 与更多 <page> 中的值匹配,那么我需要从最新的页面中获取值。我上面的情况是1352

希望这对你们有意义。顺便说一句,如果这有什么不同的话,我会使用 Umbraco CMS。

最好的问候, 金

4

3 回答 3

3

你可以用这个

(/data/page[itms/values/value = 1273])[last()]/@id

甚至这个

(//值[.=1273])[last()]/ancestor::page[1]/@id
于 2010-03-31T09:41:57.703 回答
2

类似的东西page[itms/values/value=$itm/@id][last()]/@id

于 2010-03-31T09:36:42.467 回答
1

我的版本:/data/page[itms/values/value/text()=$itm/@id][last()]/@id

于 2010-03-31T09:41:12.083 回答