如何删除元素中的 xmlns=""?

How to remove xmlns="" in an element?

问题是我不知道如何从元素中删除 xmlns。所以我的问题是:
如何删除元素中标记 NetLineAmount(参见 "Result XML")中的 xmlns=""

来源XML:

<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Factuur_insbou003.xsd">
<InvoiceLine>
    <LineNumber>1</LineNumber>
    <DeliveredQuantity>4</DeliveredQuantity>
    <DeliveredQuantityMeasureUnitCode>PCE</DeliveredQuantityMeasureUnitCode>
    <NumberOfInvoicingUnits>16.8</NumberOfInvoicingUnits>
    <NetLineAmount>44.76</NetLineAmount>
    <TradeItemIdentification>
        <GTIN>08711438159445</GTIN>
        <AdditionalItemIdentification>
            <TradeItemDescription>Vuren balk 60x150mm lengte 4200mm FSC70</TradeItemDescription>
            <Colour>Vuren</Colour>
            <PhysicalDimensions>
                <MeasurementUnitCode>CMT</MeasurementUnitCode>
            </PhysicalDimensions>
        </AdditionalItemIdentification>
    </TradeItemIdentification>
    <TradeItemCertificate>
        <CertificateClaimDescription>FSC Mix</CertificateClaimDescription>
    </TradeItemCertificate>
    <PriceInformation>
        <Price>2.96</Price>
        <PriceBase>
            <NumberOfUnitsInPriceBasis>1</NumberOfUnitsInPriceBasis>
            <MeasureUnitPriceBasis>MTR</MeasureUnitPriceBasis>
        </PriceBase>
    </PriceInformation>
</InvoiceLine>
</Invoice>

样式表XML:

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"      
     xmlns="http://www.gs1.nl/factuur/insbou/004" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<xsl:output encoding="UTF-8" />

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="/Invoice">
    <Invoice xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.gs1.nl/factuur/insbou/004 Factuur_insbou004.xsd">
        <xsl:apply-templates/>
    </Invoice>
</xsl:template>

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

<xsl:template match="DeliveredQuantityMeasureUnitCode">
<DeliveredQuantityUoM>
  <xsl:apply-templates select="@*|node()"/>
</DeliveredQuantityUoM>
</xsl:template>

<xsl:template match="NetLineAmount"> 
    <xsl:copy-of select="."/>
  <VariableOrderConditions>
    <VariableCode>LEN</VariableCode>
    <NumericValue>2000</NumericValue>
    <NumericValueUoM>MMT</NumericValueUoM>
  </VariableOrderConditions>
  <Operations>
    <OperationCode>CLE</OperationCode>
    <AlphanumericValue>Poetsen</AlphanumericValue>
    <AdditionalInformation>met chroompoets</AdditionalInformation>
    <OperationPrice>25</OperationPrice>
  </Operations>
</xsl:template>  

</xsl:transform>

结果XML(结果的问题是标签NetLineAmount中的xmlns=""):

<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.gs1.nl/factuur/insbou/004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gs1.nl/factuur/insbou/004 Factuur_insbou004.xsd">
<InvoiceLine>
    <LineNumber>1</LineNumber>
    <DeliveredQuantity>4</DeliveredQuantity>
    <DeliveredQuantityUoM>PCE</DeliveredQuantityUoM>
    <NumberOfInvoicingUnits>16.8</NumberOfInvoicingUnits>
    <NetLineAmount xmlns="">44.76</NetLineAmount>
    <VariableOrderConditions>
        <VariableCode>LEN</VariableCode>
        <NumericValue>2000</NumericValue>
        <NumericValueUoM>MMT</NumericValueUoM>
    </VariableOrderConditions>
    <Operations>
        <OperationCode>CLE</OperationCode>
        <AlphanumericValue>Poetsen</AlphanumericValue>
        <AdditionalInformation>met chroompoets</AdditionalInformation>
        <OperationPrice>25</OperationPrice>
    </Operations>
    <TradeItemIdentification>
        <GTIN>08711438159445</GTIN>
        <AdditionalItemIdentification>
            <TradeItemDescription>Vuren balk 60x150mm lengte 4200mm FSC70</TradeItemDescription>
            <Colour>Vuren</Colour>
            <PhysicalDimensions>
                <MeasurementUnitCode>CMT</MeasurementUnitCode>
            </PhysicalDimensions>
        </AdditionalItemIdentification>
    </TradeItemIdentification>
    <TradeItemCertificate>
        <CertificateClaimDescription>FSC Mix</CertificateClaimDescription>
    </TradeItemCertificate>
    <PriceInformation>
        <Price>2.96</Price>
        <PriceBase>
            <NumberOfUnitsInPriceBasis>1</NumberOfUnitsInPriceBasis>
            <MeasureUnitPriceBasis>MTR</MeasureUnitPriceBasis>
        </PriceBase>
    </PriceInformation>
</InvoiceLine>
</Invoice>

想要的结果 XML(NetLineAmount 标签中没有 xmlns=""):

<?xml version="1.0" encoding="UTF-8"?>
<Invoice xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.gs1.nl/factuur/insbou/004" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gs1.nl/factuur/insbou/004 Factuur_insbou004.xsd">
<InvoiceLine>
    <LineNumber>1</LineNumber>
    <DeliveredQuantity>4</DeliveredQuantity>
    <DeliveredQuantityUoM>PCE</DeliveredQuantityUoM>
    <NumberOfInvoicingUnits>16.8</NumberOfInvoicingUnits>
    <NetLineAmount>44.76</NetLineAmount>
    <VariableOrderConditions>
        <VariableCode>LEN</VariableCode>
        <NumericValue>2000</NumericValue>
        <NumericValueUoM>MMT</NumericValueUoM>
    </VariableOrderConditions>
    <Operations>
        <OperationCode>CLE</OperationCode>
        <AlphanumericValue>Poetsen</AlphanumericValue>
        <AdditionalInformation>met chroompoets</AdditionalInformation>
        <OperationPrice>25</OperationPrice>
    </Operations>
    <TradeItemIdentification>
        <GTIN>08711438159445</GTIN>
        <AdditionalItemIdentification>
            <TradeItemDescription>Vuren balk 60x150mm lengte 4200mm FSC70</TradeItemDescription>
            <Colour>Vuren</Colour>
            <PhysicalDimensions>
                <MeasurementUnitCode>CMT</MeasurementUnitCode>
            </PhysicalDimensions>
        </AdditionalItemIdentification>
    </TradeItemIdentification>
    <TradeItemCertificate>
        <CertificateClaimDescription>FSC Mix</CertificateClaimDescription>
    </TradeItemCertificate>
    <PriceInformation>
        <Price>2.96</Price>
        <PriceBase>
            <NumberOfUnitsInPriceBasis>1</NumberOfUnitsInPriceBasis>
            <MeasureUnitPriceBasis>MTR</MeasureUnitPriceBasis>
        </PriceBase>
    </PriceInformation>
</InvoiceLine>
</Invoice>

XSLT 的输出全部在默认命名空间 http://www.gs1.nl/factuur/insbou/004 中。

输入不在命名空间中。

当您在匹配 NetLineAmount 的模板中执行 <xsl:copy-of select="."/> 时,副本也会复制命名空间。这导致 xmlns="" 包含在输出中。

您可以从 xsl:transform 中删除 xmlns="http://www.gs1.nl/factuur/insbou/004"(这将导致输出不在命名空间中),或者您可以用文字 NetLineAmount 元素替换副本...

  <xsl:template match="NetLineAmount"> 
    <NetLineAmount>
      <xsl:apply-templates select="@*|node()"/>
    </NetLineAmount>
    <VariableOrderConditions>
      <VariableCode>LEN</VariableCode>
      <NumericValue>2000</NumericValue>
      <NumericValueUoM>MMT</NumericValueUoM>
    </VariableOrderConditions>
    <Operations>
      <OperationCode>CLE</OperationCode>
      <AlphanumericValue>Poetsen</AlphanumericValue>
      <AdditionalInformation>met chroompoets</AdditionalInformation>
      <OperationPrice>25</OperationPrice>
    </Operations>
  </xsl:template>