您能帮我找到下面示例中具有子元素 c 的所有元素 b 吗?
<a>
<b name = "b1"></b>
<b name = "b2"><c/></b>
<b name = "b3"></b>
</a>
xpath 查询必须返回 b2 元素
第二个问题是
我想组合 2 个条件:我想获取 name = "b2" 且元素 c 的元素
但这种语法似乎不起作用:
//b[@name='b2' 和 c]
只要 XML 文档的结构已知,最好避免使用//
XPath 伪运算符,因为它的使用会导致效率低下(遍历整个文档树)。
因此,我建议为所提供的 XML 文档使用此 XPath 表达式:
/*/b[c]
这将选择任何b
该元素是 XML 文档顶部元素的子元素,并且具有名为c
.
UPDATE:OP 几分钟前问了第二个问题:
第二个问题是我想结合两个条件:我想得到
具有 name = "b2" 且具有元素 c 的元素但是这个
语法似乎不起作用://b[@name='b2' and c]
提供的 XPath 表达式does准确选择所需的元素。
这是基于XSLT的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:copy-of select="//b[@name='b2' and c]"/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于提供的 XML 文档时:
<a>
<b name = "b1"></b>
<b name = "b2"><c/></b>
<b name = "b3"></b>
</a>
计算 XPath 表达式并将正确选择的元素复制到输出:
<b name="b2">
<c/>
</b>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)