我有问题。无法在XSLT中仅复制具有特定属性的节点。我的XML;
<root>
<mouse code="red"> .. </mouse>
<mouse code="blue"> .. </mouse>
<mouse code="green"> .. </mouse>
</root>
我正在尝试仅复制具有红色属性的节点来获取XML,如下所示:
<root>
<mouse code="red"> .. </mouse>
</root>
这可以通过简单的XSLT转换完成吗?
DeLuka
答案 0 :(得分:1)
您可以简单地做:
<xsl:template match="/root">
<xsl:copy>
<xsl:copy-of select="mouse[@code='red']"/>
</xsl:copy>
</xsl:template>
答案 1 :(得分:-1)
这可以简单地通过xsl:templates来完成,该模板匹配您想要的节点并使用copy / copy-of。
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="root">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="mouse[@code='red']">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
当然,如果mouse [@ code ='red']中还有其他元素,那么您将需要使用另一个模板来处理它们。