I wrote XSLT from given XML but not getting expected output.
<?xml version="1.0" encoding="UTF-8"?>
<EPCISBody>
<EventList>
<ObjectEvent>
<eventTime>2024-03-11T19:57:45.53Z</eventTime>
<eventTimeZoneOffset>-08:00</eventTimeZoneOffset>
<baseExtension>
<eventID>B88F9ACC0DD7F58E</eventID>
</baseExtension>
<epcList>
<epc>438941790942</epc>
<epc>354159881283</epc>
<epc>571494019238</epc>
<epc>600301574096</epc>
<epc>738033794266</epc>
<epc>497811017409</epc>
</epcList>
<action>ADD</action>
<bizStep>urn:epcglobal:cbv:bizstep:commissioning</bizStep>
<disposition>urn:epcglobal:cbv:disp:active</disposition>
<extension>
<ilmd>
<lotNumber>LOT_STM95</lotNumber>
<itemExpirationDate>2026-02-14</itemExpirationDate>
</ilmd>
</extension>
</ObjectEvent>
<ObjectEvent>
<eventTime>2024-03-11T19:57:45.53Z</eventTime>
<eventTimeZoneOffset>-08:00</eventTimeZoneOffset>
<baseExtension>
<eventID>B88F9ACC0DD8158E</eventID>
</baseExtension>
<epcList>
<epc>urn:epc:id:sscc:0361958.1000010007</epc>
<epc>urn:epc:id:sscc:0361958.1000010008</epc>
</epcList>
<action>ADD</action>
<bizStep>urn:epcglobal:cbv:bizstep:commissioning</bizStep>
<disposition>urn:epcglobal:cbv:disp:active</disposition>
<extension>
<ilmd>
<lotNumber>LOT_STM95</lotNumber>
<itemExpirationDate>2026-02-14</itemExpirationDate>
</ilmd>
</extension>
</ObjectEvent>
<ObjectEvent>
<eventTime>2024-03-11T19:57:45.53Z</eventTime>
<eventTimeZoneOffset>-08:00</eventTimeZoneOffset>
<baseExtension>
<eventID>B88F9ACC0DD8358E</eventID>
</baseExtension>
<epcList>
<epc>urn:epc:id:sscc:0361958.0001052872</epc>
</epcList>
<action>ADD</action>
<bizStep>urn:epcglobal:cbv:bizstep:commissioning</bizStep>
<disposition>urn:epcglobal:cbv:disp:active</disposition>
</ObjectEvent>
<AggregationEvent>
<eventTime>2024-03-12T14:28:45Z</eventTime>
<eventTimeZoneOffset>+00:00</eventTimeZoneOffset>
<baseExtension>
<eventID>B88F9ACC0DD8558E</eventID>
</baseExtension>
<parentID>urn:epc:id:sscc:0361958.1000010007</parentID>
<childEPCs>
<epc>354159881283</epc>
<epc>438941790942</epc>
<epc>571494019238</epc>
</childEPCs>
<action>ADD</action>
<bizStep>urn:epcglobal:cbv:bizstep:packing</bizStep>
<disposition>urn:epcglobal:cbv:disp:in_progress</disposition>
</AggregationEvent>
<AggregationEvent>
<eventTime>2024-03-12T14:28:45Z</eventTime>
<eventTimeZoneOffset>+00:00</eventTimeZoneOffset>
<baseExtension>
<eventID>B88F9ACC0DD8758E</eventID>
</baseExtension>
<parentID>urn:epc:id:sscc:0361958.1000010008</parentID>
<childEPCs>
<epc>497811017409</epc>
<epc>600301574096</epc>
<epc>738033794266</epc>
</childEPCs>
<action>ADD</action>
<bizStep>urn:epcglobal:cbv:bizstep:packing</bizStep>
<disposition>urn:epcglobal:cbv:disp:in_progress</disposition>
</AggregationEvent>
<AggregationEvent>
<eventTime>2024-03-12T14:28:46Z</eventTime>
<eventTimeZoneOffset>+00:00</eventTimeZoneOffset>
<baseExtension>
<eventID>B88F9ACC0DD8958E</eventID>
</baseExtension>
<parentID>urn:epc:id:sscc:0361958.0001052872</parentID>
<childEPCs>
<epc>urn:epc:id:sscc:0361958.1000010007</epc>
<epc>urn:epc:id:sscc:0361958.1000010008</epc>
</childEPCs>
<action>ADD</action>
<bizStep>urn:epcglobal:cbv:bizstep:packing</bizStep>
<disposition>urn:epcglobal:cbv:disp:in_progress</disposition>
</AggregationEvent>
<ObjectEvent>
<eventTime>2024-03-12T14:28:47Z</eventTime>
<eventTimeZoneOffset>+00:00</eventTimeZoneOffset>
<baseExtension>
<eventID>B88F9ACC0DD8B58E</eventID>
</baseExtension>
<epcList>
<epc>urn:epc:id:sscc:0361958.0001052872</epc>
<epc>urn:epc:id:sscc:0361958.0001052873</epc>
</epcList>
<action>OBSERVE</action>
<bizStep>urn:epcglobal:cbv:bizstep:shipping</bizStep>
<disposition>urn:epcglobal:cbv:disp:in_transit</disposition>
</ObjectEvent>
</EventList>
</EPCISBody>
Actual--
<?xml version="1.0" encoding="UTF-8"?>
<despatchAdvice>
<despatchAdviceLogisticUnitLineItem>
<logisticUnitIdentification>
<serialShipmentContainerCode>
<serialShippingContainerCode>urn:epc:id:sscc:0361958.0001052872</serialShippingContainerCode>
</serialShipmentContainerCode>
</logisticUnitIdentification>
<levelId>
<levelIdentification>urn:epc:id:sscc:0361958.0001052872</levelIdentification>
</levelId>
</despatchAdviceLogisticUnitLineItem>
</despatchAdvice>
Expected--
<despatchAdvice>
<despatchAdviceLogisticUnitLineItem>
<logisticUnitIdentification>
<serialShipmentContainerCode>
<serialShippingContainerCode>urn:epc:id:sscc:0361958.0001052872</serialShippingContainerCode>
</serialShipmentContainerCode>
</logisticUnitIdentification>
<levelId>
<levelIdentification>urn:epc:id:sscc:0361958.0001052872</levelIdentification>
</levelId>
</despatchAdviceLogisticUnitLineItem>
<despatchAdviceLogisticUnitLineItem>
<logisticUnitIdentification>
<serialShipmentContainerCode>
<serialShippingContainerCode>urn:epc:id:sscc:0361958.0001052873</serialShippingContainerCode>
</serialShipmentContainerCode>
</logisticUnitIdentification>
<levelId>
<levelIdentification>urn:epc:id:sscc:0361958.0001052873</levelIdentification>
</levelId>
</despatchAdviceLogisticUnitLineItem>
</despatchAdvice>
Can someone please suggest what is missing here in XSLT code I have written. Please suggest how to achieve right output from XSLT.
XSLT used is below-
<xsl:template match="/">
<tns:despatchAdvice>
<xsl:for-each select="/ns0:EPCISDocument/EPCISBody/EventList/ObjectEvent">
<xsl:if test="contains (bizStep, 'shipping' )">
<despatchAdviceLogisticUnitLineItem>
<logisticUnitIdentification>
<serialShipmentContainerCode>
<serialShippingContainerCode>
<xsl:value-of select="epcList/epc"/>
</serialShippingContainerCode>
</serialShipmentContainerCode>
</logisticUnitIdentification>
<levelId>
<levelIdentification>
<xsl:value-of select="epcList/epc"/>
</levelIdentification>
</levelId>
</despatchAdviceLogisticUnitLineItem>
</xsl:if>
</xsl:for-each>
</tns:despatchAdvice>
</xsl:template>
I think you want:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/EPCISBody">
<despatchAdvice>
<xsl:for-each select="EventList/ObjectEvent[contains(bizStep, 'shipping')]/epcList/epc">
<despatchAdviceLogisticUnitLineItem>
<logisticUnitIdentification>
<serialShipmentContainerCode>
<serialShippingContainerCode>
<xsl:value-of select="."/>
</serialShippingContainerCode>
</serialShipmentContainerCode>
</logisticUnitIdentification>
<levelId>
<levelIdentification>
<xsl:value-of select="."/>
</levelIdentification>
</levelId>
</despatchAdviceLogisticUnitLineItem>
</xsl:for-each>
</despatchAdvice>
</xsl:template>
</xsl:stylesheet>