2017-10-26 7 views
2

問題は、xmlnsを要素から削除する方法がわかりません。だから私の質問は:
タグ内のxmlns=""タグNetLineAmount(「結果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:

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

<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=""です) (タグNetLineAmにはxmlns=""はありませんount):

<?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> 
+2

心配しないでください名前空間宣言について:作成している要素の名前について心配してください。 '' xmlns = "" 'を取り除くにはどうすればよいのでしょうか?「XX要素を正しい名前空間に入れるにはどうすればいいですか」と思ってください。要素を作成するための3つの命令の異なる名前空間の振る舞い(xsl:element、xsl:copy、およびリテラルの結果要素) –

答えて

3

あなたのXSLTの出力は、すべてのデフォルトの名前空間http://www.gs1.nl/factuur/insbou/004です。

入力が名前空間にありません。

テンプレート内の<xsl:copy-of select="."/>NetLineAmountと一致させると、copy-ofは名前空間もコピーします。これにより、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> 
関連する問題