2013-07-12 12 views
6

mam tego komunikatu XML:XSLT 1.0 Usuń xmlns = "" z elementu

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

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

Przede XSLT daje mi następujący wynik:

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

Co jest prawie tym, czego potrzebuję, ale nie chcę tego xlmns = "" po węźle zamówienia.

Co chcę to:

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

Czy ktoś może mi pomóc z tym? Dzięki.

Odpowiedz

2

Trzeba wyjściu inne elementy (dopasowane *) w tej samej przestrzeni nazw:

<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> 
Powiązane problemy