2013-07-12 22 views
6

ich diese XML-Nachricht haben:XSLT 1.0 entfernen xmlns = "" von Element

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

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

Above XSLT gibt mir die folgende Ausgabe:

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

Was ist fast das, was ich brauche, aber ich will das nicht xlmns = "" nach Auftragsknoten.

Was ich will, ist dies:

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

Kann mir jemand dabei helfen? Danke.

Antwort

2

Sie müssen die anderen Elemente (in Verbindung mit *) im gleichen Namensraum zur Ausgabe:

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