我有一个xml包含以下信息,我使用Xpath来解析它
<root>
<a>
<b></b>
<c></c>
<d></d>
</a>
<a>
<b></b>
<c></c>
<d></d>
</a>
</root>
我的目标是获取标记'a'的节点列表,并在每个子节点列表中包含'b'和'c'(等过滤掉'd'!)我目前正在做的是使用'/ root / a '要获得包含所有'a','b'和'c'的节点,然后去除'c',我的目标是在XPath中进行过滤,而不是使用额外的代码,无论如何我可以做到了吗?谢谢!
答案 0 :(得分:2)
您可以通过使用下面的图案复制所有内容来过滤掉元素,然后只截取要过滤掉的元素。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="a/d"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这是有效的,因为特殊模板比一般模板具有更高的优先级。因此,第二个适用于除d
以下a
以外的所有元素。第一个模板什么都不做,即忽略元素。