2012-06-12 67 views
2

我有下面的XMLXSLT變化節點,並添加命名空間

<?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> 
後以下

在此先感謝

回答

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> 
+0

感謝它的作品像一個魅力 – JohnXsl

+1

我會做一個小小的改動:使用'name =「ns0:{local-name()}」'這樣如果應用於已經使用名稱空間前綴的輸入,它仍然有效。 –

+0

@MichaelKay好點謝謝。 – JohnXsl