2016-12-02 29 views
0

我輸入XML像更改某些XML標籤,同時保持其他XML數據相同

<?xml version="1.0" encoding="utf-8"?> 
<Document 
    xsi:schemaLocation="http://rep.evenex.dk/schema/evenex/eBusiness_01 http://rep.evenex.dk/schema/evenex/eBusiness_01/e-commerce_101.xsd" 
    Version="101" System="HubBroker" SystemVersion="7.00.3.71.03" 
    xmlns="http://rep.evenex.dk/schema/evenex/eBusiness_01" 
    xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" 
    xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Header> 
    <SenderEndpointID qualifier="EAN">1234567899338</SenderEndpointID> 
    <ReceiverEndpointID qualifier="EAN">1234567899338</ReceiverEndpointID> 
    <CreatedDate>2016-12-01</CreatedDate> 
    <CreatedTime>12:25:59</CreatedTime> 
    <EDIRefNo>16936</EDIRefNo> 
    <Test>false</Test> 
    <AcknowledgementRequest>Yes</AcknowledgementRequest> 
    <MailBounce>false</MailBounce> 
    </Header> 
    <Body> 
    <DispatchReference>16936</DispatchReference> 
    <DocumentType>DESADV</DocumentType> 
    <DocumentNo>16936</DocumentNo> 
    <DocumentDate>2016-12-01</DocumentDate> 
    <ShipmentDate>2016-12-01</ShipmentDate> 
    <ExternalDocumentNo>100697854</ExternalDocumentNo> 
    <PayableAmount>0.00</PayableAmount> 
    <TaxInclusiveAmount>0.00</TaxInclusiveAmount> 
    <TotalItemAmount>0.00</TotalItemAmount> 
    <Parties> 
     <Party type="Sellto"> 
     <No>1234567899338</No> 
     <Name></Name> 
     <Address></Address> 
     <Address2></Address2> 
     <City></City> 
     <PostCode></PostCode> 
     <CountryRegionCode></CountryRegionCode> 
     <ContactEmail></ContactEmail> 
     </Party> 
     <Party type="Shipto"> 
     <No>1234567899338</No> 
     </Party> 
     <Party type="Billto"> 
     <No>1234567899338</No> 
     <Name>asd</Name> 
     <Address /> 
     <Address2>asd DU asd 13</Address2> 
     <City>København K</City> 
     <PostCode>1050</PostCode> 
     <CountryRegionCode>DK</CountryRegionCode> 
     </Party> 
     <Party type="Supplier"> 
     <No>5790000718825</No> 
     <Name>asd ApS</Name> 
     <Address></Address> 
     <Address2>asd 66</Address2> 
     <City>as NV</City> 
     <PostCode>2400</PostCode> 
     <CountryRegionCode>DK</CountryRegionCode> 
     <VATRegNo></VATRegNo> 
     <Contact></Contact> 
     <ContactPhoneNo></ContactPhoneNo> 
     <ContactFaxNo></ContactFaxNo> 
     <ContactEmail></ContactEmail> 
     </Party> 
    </Parties> 
    <Lines> 
     <Line> 
     <LineNo>1</LineNo> 
     <EANNo>761318024156</EANNo> 
     <ItemNo>761318024156</ItemNo> 
     <Description>REVLON Glattejern</Description> 
     <Description2>REVLON Glattejern</Description2> 
     <Quantity>18.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>18.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
     <Line> 
     <LineNo>2</LineNo> 
     <EANNo>761318135272</EANNo> 
     <ItemNo>761318135272</ItemNo> 
     <Description>REVLON Manicure og pedicure sæt</Description> 
     <Description2>REVLON Manicure og pedicure sæt</Description2> 
     <Quantity>6.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>6.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
     <Line> 
     <LineNo>3</LineNo> 
     <EANNo>761318364740</EANNo> 
     <ItemNo>761318364740</ItemNo> 
     <Description>REVLON Varmluftskrøllejern</Description> 
     <Description2>REVLON Varmluftskrøllejern</Description2> 
     <Quantity>6.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>6.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
     <Line> 
     <LineNo>4</LineNo> 
     <EANNo>5996415024715</EANNo> 
     <ItemNo>5996415024715</ItemNo> 
     <Description>MOSER Hårklipper Lithium Pro LED</Description> 
     <Description2>MOSER Hårklipper Lithium Pro LED</Description2> 
     <Quantity>5.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>5.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
     <Line> 
     <LineNo>5</LineNo> 
     <EANNo>5996415024739</EANNo> 
     <ItemNo>5996415024739</ItemNo> 
     <Description>MOSER Hårklipper Lithium Pro LCD</Description> 
     <Description2>MOSER Hårklipper Lithium Pro LCD</Description2> 
     <Quantity>3.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>3.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
    </Lines> 
    </Body> 
</Document> 

我想改變EANNO,產品編號字段添加前導零,如果長度少於13個字符。規則應適用於所有線路標籤

所以爲前,如果EANNO「761318024156」,那麼在輸出文件應該是「0761318024156」

所以最終的輸出應如下

<?xml version="1.0" encoding="utf-8"?> 
<Document 
    xsi:schemaLocation="http://rep.evenex.dk/schema/evenex/eBusiness_01 http://rep.evenex.dk/schema/evenex/eBusiness_01/e-commerce_101.xsd" 
    Version="101" System="HubBroker" SystemVersion="7.00.3.71.03" 
    xmlns="http://rep.evenex.dk/schema/evenex/eBusiness_01" 
    xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" 
    xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Header> 
    <SenderEndpointID qualifier="EAN">1234567899338</SenderEndpointID> 
    <ReceiverEndpointID qualifier="EAN">1234567899338</ReceiverEndpointID> 
    <CreatedDate>2016-12-01</CreatedDate> 
    <CreatedTime>12:25:59</CreatedTime> 
    <EDIRefNo>16936</EDIRefNo> 
    <Test>false</Test> 
    <AcknowledgementRequest>Yes</AcknowledgementRequest> 
    <MailBounce>false</MailBounce> 
    </Header> 
    <Body> 
    <DispatchReference>16936</DispatchReference> 
    <DocumentType>DESADV</DocumentType> 
    <DocumentNo>16936</DocumentNo> 
    <DocumentDate>2016-12-01</DocumentDate> 
    <ShipmentDate>2016-12-01</ShipmentDate> 
    <ExternalDocumentNo>100697854</ExternalDocumentNo> 
    <PayableAmount>0.00</PayableAmount> 
    <TaxInclusiveAmount>0.00</TaxInclusiveAmount> 
    <TotalItemAmount>0.00</TotalItemAmount> 
    <Parties> 
     <Party type="Sellto"> 
     <No>1234567899338</No> 
     <Name></Name> 
     <Address></Address> 
     <Address2></Address2> 
     <City></City> 
     <PostCode></PostCode> 
     <CountryRegionCode></CountryRegionCode> 
     <ContactEmail></ContactEmail> 
     </Party> 
     <Party type="Shipto"> 
     <No>1234567899338</No> 
     </Party> 
     <Party type="Billto"> 
     <No>1234567899338</No> 
     <Name>asd</Name> 
     <Address /> 
     <Address2>asd DU asd 13</Address2> 
     <City>København K</City> 
     <PostCode>1050</PostCode> 
     <CountryRegionCode>DK</CountryRegionCode> 
     </Party> 
     <Party type="Supplier"> 
     <No>5790000718825</No> 
     <Name>asd ApS</Name> 
     <Address></Address> 
     <Address2>asd 66</Address2> 
     <City>as NV</City> 
     <PostCode>2400</PostCode> 
     <CountryRegionCode>DK</CountryRegionCode> 
     <VATRegNo></VATRegNo> 
     <Contact></Contact> 
     <ContactPhoneNo></ContactPhoneNo> 
     <ContactFaxNo></ContactFaxNo> 
     <ContactEmail></ContactEmail> 
     </Party> 
    </Parties> 
    <Lines> 
     <Line> 
     <LineNo>1</LineNo> 
     <EANNo>0761318024156</EANNo> 
     <ItemNo>0761318024156</ItemNo> 
     <Description>REVLON Glattejern</Description> 
     <Description2>REVLON Glattejern</Description2> 
     <Quantity>18.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>18.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
     <Line> 
     <LineNo>2</LineNo> 
     <EANNo>0761318135272</EANNo> 
     <ItemNo>0761318135272</ItemNo> 
     <Description>REVLON Manicure og pedicure sæt</Description> 
     <Description2>REVLON Manicure og pedicure sæt</Description2> 
     <Quantity>6.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>6.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
     <Line> 
     <LineNo>3</LineNo> 
     <EANNo>0761318364740</EANNo> 
     <ItemNo>0761318364740</ItemNo> 
     <Description>REVLON Varmluftskrøllejern</Description> 
     <Description2>REVLON Varmluftskrøllejern</Description2> 
     <Quantity>6.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>6.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
     <Line> 
     <LineNo>4</LineNo> 
     <EANNo>5996415024715</EANNo> 
     <ItemNo>5996415024715</ItemNo> 
     <Description>MOSER Hårklipper Lithium Pro LED</Description> 
     <Description2>MOSER Hårklipper Lithium Pro LED</Description2> 
     <Quantity>5.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>5.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
     <Line> 
     <LineNo>5</LineNo> 
     <EANNo>5996415024739</EANNo> 
     <ItemNo>5996415024739</ItemNo> 
     <Description>MOSER Hårklipper Lithium Pro LCD</Description> 
     <Description2>MOSER Hårklipper Lithium Pro LCD</Description2> 
     <Quantity>3.00</Quantity> 
     <UnitofMeasure>PCE</UnitofMeasure> 
     <UnitPrice>.00</UnitPrice> 
     <Amount>3.00</Amount> 
     <LineExtensionAmount>0.00</LineExtensionAmount> 
     </Line> 
    </Lines> 
    </Body> 
</Document> 

我有試圖讓XSLT複製其他數據,但不知道我怎麼可以進一步 這就是我試過的。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns="http://rep.evenex.dk/schema/evenex/eBusiness_01" 
    xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" 
    xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://rep.evenex.dk/schema/evenex/eBusiness_01 http://rep.evenex.dk/schema/evenex/eBusiness_01/e-commerce_101.xsd" 
    version="1.0"> 
    <xsl:output method="xml" version="1.0" indent="yes" encoding="iso-8859-1" /> 
    <xsl:strip-space elements="*" /> 

    <xsl:template match="Lines/Line/EANNO">  
    </xsl:template> 


    <!--Identity template, provides default behavior that copies all content into the output --> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

回答

1

首先,

<xsl:template match="Lines/Line/EANNO"> 

不會匹配您輸入XML什麼,因爲它有一個默認命名空間。除此之外,它非常簡單;你只需要在EAN格式化爲13位數字:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:eb1="http://rep.evenex.dk/schema/evenex/eBusiness_01" 
exclude-result-prefixes="eb1"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

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

<xsl:template match="eb1:EANNo"> 
    <xsl:copy> 
     <xsl:value-of select="format-number(., '0000000000000')"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 
+0

它的工作。謝謝 – Darshan4742

相關問題