Xslt更改节点并添加命名空间

时间:2012-06-12 20:24:10

标签: xml xslt replace namespaces

我有以下XML

<?xml version="1.0"?>
<location>
<Destination>Des01</Destination>
<DesCode>ACD8701</DesCode>
<UniqueId>023154</UniqueId>
<Amount>26</Amount>
</location>

我想将<location>更改为<abc_ItemUpdate>并添加命名空间 因此在使用XSLT后输出应如下所示

<ns0:abc_ItemUpdate xmlns:ns0="http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo">
    <ns0:Destination>Des01</ns0:LegalEntity>
    <ns0:DesCode>ACD8701</ns0:DesCode>
    <ns0:UniqueId>023154</ns0:UniqueId>
    <ns0:Amount>26</ns0:Amount>
</ns0:abc_ItemUpdate>

提前致谢

1 个答案:

答案 0 :(得分:2)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output indent="yes"/>

 <xsl:template match="/location">

     <xsl:element name="ns0:abc_ItemUpdate" namespace="http://yournms">
         <!-- copy attributes if any -->
         <xsl:copy-of select="@*"/>
         <xsl:apply-templates/>
     </xsl:element>

 </xsl:template>

 <xsl:template match="*">
     <xsl:element name="ns0:{name()}" namespace="http://yournms">
         <!-- copy attributes if any -->
         <xsl:copy-of select="@*"/>
         <xsl:apply-templates/>
     </xsl:element>
 </xsl:template>

</xsl:stylesheet>