Xslt更改元素名称

时间:2018-04-23 21:14:09

标签: xml xslt

我想用xslt更改xml元素。

XML:

 <PARAM name="ulang" value="de" original_value="de"/>
 <PARAM name="wc" value="200" original_value="200"/>
 <PARAM name="wc_mc" value="1" original_value="1"/>
 <RES SN="1" EN="727">
   <M>727</M>
   <XT/>
   <R N="1" L="1" MIME="text/plain">
     <U>url</U>
     <UE>url</UE>
     <UD>url</UD>
     <RK>10</RK>
     <MT N="Content_Length" V="42"/>
     <MT N="url_id" V="005056A51FAC1EE0B9A3EF696BB229CB"/>

我试图用这个xslt改变它:

   <xsl:template match="@*|node()">
       <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
       </xsl:copy>
     </xsl:template>
    <xsl:template match="MT[@N='url_id']">
    <xsl:attribute name="url-id">
  <xsl:value-of select="."/>
 </xsl:attribute>
</xsl:template>

我希望url_id更改为url-id。

结果应如下所示:

 <PARAM name="ulang" value="de" original_value="de"/>
 <PARAM name="ulang" value="de" original_value="de"/>
 <PARAM name="wc" value="200" original_value="200"/>
 <PARAM name="wc_mc" value="1" original_value="1"/>
 <RES SN="1" EN="727">
   <M>727</M>
   <XT/>
   <R N="1" L="1" MIME="text/plain">
     <U>url</U>
     <UE>url</UE>
     <UD>url</UD>
     <RK>10</RK>
     <MT N="Content_Length" V="42"/>
    <MT N="url-id" V="005056A51FAC1EE0B9A3EF696BB229CB"/>

谢谢!

1 个答案:

答案 0 :(得分:1)

您的模板与MT元素匹配,并尝试创建一个属性来代替该元素。

您需要将模板更改为匹配属性而不是......

<xsl:template match="MT/@N[. = 'url_id']">
  <xsl:attribute name="N">
    <xsl:value-of select="'url-id'"/>
  </xsl:attribute>
</xsl:template>

甚至这个......

<xsl:template match="MT/@N[. = 'url_id']">
  <xsl:attribute name="N">url-id</xsl:attribute>
</xsl:template>
相关问题