Darshan4742
Darshan4742

Reputation: 56

Change some XML tag while keeping other XML data same

I have input XML like

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

I want to change EANNO, ItemNo fields to add leading Zero if length is less then 13 characters. Rule should apply to all Line Tags

So for ex, if EANNO "761318024156" then in output file it should be "0761318024156"

So final output should look like below

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

I have tried to made XSLT to copy other data, but no idea how i can go further This is what i tried.

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

Upvotes: 0

Views: 26

Answers (1)

michael.hor257k
michael.hor257k

Reputation: 116959

First,

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

will not match anything in your input XML, because it has a default namespace. Other than that, it it's very simple; you just need to format the EAN to 13 digits:

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>

Upvotes: 1

Related Questions