XSLT按属性复制

时间:2018-11-14 05:49:00

标签: xslt attributes nodes

我有问题。无法在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

2 个答案:

答案 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']中还有其他元素,那么您将需要使用另一个模板来处理它们。