你能帮我找一下下面例子中包含子元素c的所有元素吗?
<a>
<b name = "b1"></b>
<b name = "b2"><c/></b>
<b name = "b3"></b>
</a>
Run Code Online (Sandbox Code Playgroud)
xpath查询必须返回b2元素
第二个问题是我想要结合两个条件:我想得到名称="b2"并且具有元素c的元素但是这个语法似乎不起作用:// b [@ name ='b2'和c]
Dim*_*hev 54
每当知道XML文档的结构时,最好避免使用//
XPath伪运算符,因为它的使用会导致效率低下(遍历整个文档树).
因此,我推荐使用提供的XML文档的XPath表达式:
/*/b[c]
Run Code Online (Sandbox Code Playgroud)
这将选择任何b
元素,该元素是XML文档顶部元素的子元素,并且具有一个名为的子元素c
.
更新:OP在几分钟前问了第二个问题:
第二个问题是我想要结合两个条件:我想得到名称="b2"并且具有元素c的元素但是这个语法似乎不起作用:
//b[@name='b2' and c]
提供的XPath表达式确实选择了所需的元素.
这是基于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>
Run Code Online (Sandbox Code Playgroud)
在提供的XML文档上应用此转换时:
<a>
<b name = "b1"></b>
<b name = "b2"><c/></b>
<b name = "b3"></b>
</a>
Run Code Online (Sandbox Code Playgroud)
计算XPath表达式并将正确选择的元素复制到输出:
<b name="b2">
<c/>
</b>
Run Code Online (Sandbox Code Playgroud)