2017-10-26 1 views
2

문제는 xmlns을 요소에서 제거하는 방법을 모르겠다는 것입니다. 그래서 내 질문은 :
엘리멘트의 NetLineAmount 태그 ("결과 XML"참조)에서 xmlns=""을 제거하는 방법은 무엇입니까?엘리먼트에서 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 : 요소, xsl : 복사 및 리터럴 결과 요소) –

답변

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> 
관련 문제