XSLT标签属性正在丢失

时间:2017-11-02 10:18:21

标签: xslt xslt-1.0 xslt-2.0 xslt-grouping

输入XML

<?xml version="1.0" encoding="UTF-8"?>
<web-inf metadata-complete="true">
    <A>
       <A1>DGDDG</A1>
       <A1>TYTY</A1>
    </A>
</web-inf>

当我应用我的转换时,O / P XML只是转储<web-inf>标签而没有metadata-complete =&#34; true&#34;即如下

<?xml version="1.0" encoding="UTF-8"?>
<web-inf>
    <A>
       <A1>DGDDG</A1>
       <A1>TYTY</A1>
    </A>
</web-inf>

我的XSLT转换文件在下面开头。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />

<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="web-inf[not(A/A1='hello')]">
    <xsl:copy>
        <xsl:call-template name="XXX"/>
        <xsl:apply-templates />
    </xsl:copy>
</xsl:template>

</xsl:stylesheet>

不确定这里出了什么问题。 有什么建议吗?

1 个答案:

答案 0 :(得分:1)

<xsl:copy>仅复制当前节点,但不复制任何属性或子节点。您已经开始使用<xsl:apply-templates />(相当于<xsl:apply-templates select="node()" />)来处理子节点,但您还需要单独选择属性。

<xsl:template match="web-inf[not(A/A1='hello')]">
    <xsl:copy>
        <xsl:apply-templates select="@*" />
        <xsl:call-template name="XXX"/>
        <xsl:apply-templates />
    </xsl:copy>
</xsl:template>