我正在使用一个非常通用的 XML 结构,其中一切都是一个项目(无论如何,一切都与这个问题相关)。
基于了解我当前所在的项目元素以及作为我正在查找的节点的父级的项目元素,我需要找到一个项目。我有一个可用的 xpath,但它相当消耗资源,我正在寻找更优雅、更便宜的东西。
item key=a 节点是我正在查找的元素的父级(尽管它实际上不是文档根的子级)
XML:
<root>
<item key="a">
<item key="b">
<item key="c">
<item key="d"/>
</item>
</item>
<item key="e">
<item key="f">
<item key="g"/>
</item>
</item>
</item>
</root>
实际的 XML 更深,并且有更多的分支。
例如,如果我在 key=g、e 或 f 的项目上,我需要返回 key=e 的项目。如果我在带有键 b、c 或 d 的项目上,我需要返回带有 key=b 的项目。
我正在使用这个 xpath,它正在工作,但是沿着祖先-后代轴向上然后返回似乎比我需要的要长得多。
current()
/ancestor-or-self::item[@key='a']
/item[descendant-or-self::* = current()]
有没有更简单的方法来做到这一点,请记住我只知道 1)我所在的节点和 2)我正在寻找的节点的父节点的关键属性?
只是为了详细起见:XML 是 Sitecore 生成的,我实际上并没有使用 current() 函数,而是使用 sc_currentitem 参数来设置我需要开始处理的起始节点。
提前致谢。
Use:
ancestor-or-self::*[parent::item[@key='a']]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)