2013-07-12 18 views
6

から "" =のxmlnsを削除します。XSLT 1.0は、私は、このXMLメッセージを持っている要素

<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:XSLT上記

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

は私に次のような出力が得られます。

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

これは私が必要とするものですが、xlmns = "" Orderノードの後に​​は必要ありません。私が欲しいもの

はこれです:

<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> 
関連する問題