xml - XSLT:获取存在某一特定值的节点

标签 xml xslt umbraco

我有以下 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 > 标签之一中存在某个值。 中需要的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。

最诚挚的问候, 金姆

最佳答案

你可以使用这个

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

甚至这个

(//value[.=1273])[last()]/ancestor::page[1]/@id

关于xml - XSLT:获取存在某一特定值的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551736/

相关文章:

database - 是否可以将 sdf umbraco 数据库转换为 Azure SQL?

c - 在 C 中打印 XML 中的节点

java - 如何在Android中使用layoutDirection动态镜像整个布局?

xml - 使用 xslt 遍历属性

.net - 了解为 Umbraco 添加/创建新模板的基础知识

full-text-search - Lucene 检查的搜索条件

java - 在eclipse上创建android项目时出错

xml - 在 Axis2 中使用 XML 1.1

xml - 如何检查一个值是否在值序列中?

xml - XSLT:仅输出当前节点的文本并规范化空格