更改一些XML标记,同时保持其他XML数据相同

时间:2016-12-02 12:01:52

标签: xml xslt

我输入了像

这样的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>

如果长度小于13个字符,我想更改EANNO,ItemNo字段以添加前导零。规则应适用于所有行标记

所以对于前者,如果EANNO&#34; 761318024156&#34;然后在输出文件中它应该是&#34; 0761318024156&#34;

所以最终输出应该如下所示

<?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 个答案:

答案 0 :(得分:1)

首先,

SearchActivity

与输入XML中的任何内容都不匹配,因为它具有默认命名空间。除此之外,它非常简单;你只需要将EAN格式化为13位数:

XSLT 1.0

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