2013-07-12 123 views
6

刪除的xmlns = 「」 我有這樣的XML消息:XSLT 1.0從元件

<Orders xmlns="http://AU.InputOrders"> 
<Order> 
<OrderRef>D04004451</OrderRef> 
<ABN>9780571244461</ABN> 
<OrderQty>1</OrderQty> 
</Order> 
<Order> 
<OrderRef>D04004451</OrderRef> 
<ABN>9780571254057</ABN> 
<OrderQty>1</OrderQty> 
</Order> 
<Order> 
<OrderRef>D04004452</OrderRef> 
<ABN>9781864489545</ABN> 
<OrderQty>1</OrderQty> 
</Order> 
</Orders> 

這XSLT 1.0:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ns0="http://AU.InputOrders"> 
<xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes" indent="no"/> 

<xsl:template match="/"> 
<xsl:element name="Orders" namespace="http://AU.OutputOrders"> 
<xsl:apply-templates select="ns0:Orders/ns0:Order[1]" /> 
</xsl:element> 
</xsl:template> 

<xsl:template match="*"> 
    <xsl:element name="{local-name()}"> 
    <xsl:copy-of select="@*" /> 
    <xsl:apply-templates select="node()" /> 
    </xsl:element> 
</xsl:template> 

</xsl:stylesheet> 

以上XSLT給我下面的輸出:

<Orders xmlns="http://AU.OutputOrders"><Order xmlns=""> 
<OrderRef>D04004451</OrderRef> 
<ABN>9780571244461</ABN> 
<OrderQty>1</OrderQty> 
</Order></Orders> 

這幾乎是我所需要的,但我不想在訂單節點後面顯示xlmns =「」。

我想是這樣的:

<Orders xmlns="http://AU.OutputOrders"><Order> 
<OrderRef>D04004451</OrderRef> 
<ABN>9780571244461</ABN> 
<OrderQty>1</OrderQty> 
</Order></Orders> 

有人可以幫助我? 謝謝。

回答

2

你需要輸出的其他元素(與*匹配)在同一個名字:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:ns0="http://AU.InputOrders" xmlns="http://AU.OutputOrders"> 
    <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes" indent="no"/> 

    <xsl:template match="/*"> 
     <xsl:element name="{name()}" namespace="http://AU.OutputOrders"> 
      <xsl:apply-templates select="ns0:Order[1]"/>    
     </xsl:element> 
    </xsl:template> 

    <xsl:template match="*"> 
     <xsl:element name="{name()}" namespace="http://AU.OutputOrders"> 
      <xsl:apply-templates select="node()"/> 
     </xsl:element> 
    </xsl:template> 

</xsl:stylesheet>