更改元素名称并复制所有属性

时间:2014-03-18 14:39:36

标签: xml xslt

我有这个:

<tab:column align="left" class="notdecorated" label="lab"> <b>General Information</b> </tab:column>

我希望得到这个:

<column align="left" class="notdecorated" label="lab"> <b>General Information</b> <column>

这是我的-incomplete- xslt transformator:

 <xsl:template match="tab:column">
    <column>
       <xsl:apply-templates />
    </column>
 </xsl:template>

它忽略了&#39;标签&#39;部分但不复制属性。所以我像这样丰富了它:

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

但这也不起作用。  那么如何复制属性并同时更改元素名称?

1 个答案:

答案 0 :(得分:2)

使用

 <xsl:template match="tab:column">
    <column>
       <xsl:copy-of select="@*"/>
       <xsl:apply-templates />
    </column>
 </xsl:template>

或身份转换模板加上

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