Now let me explain the scenario.
Under <Ship> node PickupDate maps to CREDAT.
Under <ShipBP> node,
Identifier is a constant '*AA'.
SenderShipperNumber will have the value of the first occurence of SHIPACCT, which is in the path /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL47/SHIPACCT.
ShipperCountry maps to first value of ZSHPCNTRY, which is in the path /EDT20/IDOC/E1EDT20/Z1EDT20/ZSHPCNTRY.
BookNum has a small logic associated to it. It is first value of VLABDATA picked up from /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL47/E1EDL48/VLABDATA with the check that XSIQUALF = 'BOOK1'.
PageNum also is similar to BookNum, except that the check is XSIQUALF = 'PAGENR'.
Now comes the next node <Ship_Info>. Identifier is a constant '*BA'. This is a bit complex. We see that the <Ship_Info> node comes thrice. The number of times the node is repeated is based on the following check. We should first identify the PARTNER_Q elements with value of 'WE'. PARTNER_Q is in the path, /EDT20/IDOC/E1EDT20/E1EDL20/E1ADRM1/PARTNER_Q. If the PARTNER_Q value is 'WE', then the value of 'AddressQualifier' would be '18',and also we should check for the PARTNER_ID value. If PARTNER_Q is 'WE' and PARTNER_ID value is the same then, we should basically aggregate the values of ANZPK (path is /EDT20/IDOC/E1EDT20/E1EDL20/ANZPK) for PackageCount, BRGEW (path is /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL37/BRGEW) for ShipmentActualWeight.
In the above example, PARTNER_Q = 'WE' occurs 3 times. But out of the 3 times, the first 2 occurence has the same PARTNER_ID of 0004100357, so we club those 2 as a single occurence, and sum up corresponding ANZPK (00001 + 00001 = 00002) and BRGEW (6.200 + 6.200 = 12.400). Hence PackageCount will be '00002' and ShipmentActualWeight will be 12.400 the first time. Next for PARTNER_Q = 'WE' and PARTNER_ID =
0004100350, as it appears once, we just take the corresponding PackageCount and ShipmentActualWeight (00001 & 6.200 respectively). When PARTNER_Q = 'SP' then the AddressQualifier will have a value of '06'. Anyother PARTNER_Q value should not be considered at all. The other values such as UOMWeight (path is /EDT20/IDOC/E1EDT20/E1EDL20/GEWEI), UPSServiceType (path is /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL47/XSISRVC),UOMDIM (path is /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL37/MEABM), CurrencyCode (path is /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL33/GRWCU). For ShipmentChgType (path is /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL47/E1EDL48/VLABDATA) there is a condition check like XSIQUALF = 'ZCHARGTYPE'.
Next comes the final node <Pkg_Info>, here also the identifier is a constant. In this case this node occurs twice. This is based on PackageTrackingNumber i.e TRACKN (path is /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL37/E1EDL49/TRACKN), if TRACKN is repeated ignore the duplicate, and take the corresponding PackageActualWeight i.e BRGEW (path is /EDT20/IDOC/E1EDT20/E1EDL20/E1EDL37/BRGEW).
I have tried my best to put forward the requirement, in case it is not clear please do ask me. Also remember the nodes are dynamic, so the number of nodes can change as per the source XML. I need a solution preferably in XSLT 1.0, if possible.
PS: Ivan had helped me out the previous time, i hope to get some help from the Stylus Studio team or the other fellow members this time as well :)