cancel
Showing results for 
Search instead for 
Did you mean: 

Remove tokens from string and sort string via XSLT mapping

Former Member
0 Kudos

Hi,

I have a requirement wherein I need to sort the records in an XML file with customer num & order number.

The value of order number is concatenation of order and item like: 3249_110 , 3249_10, 3290_110,3290_10 and so on.

Expected result:

3249_10

3249_110

3290_10

3290_110

The sort on order number is not giving correct result as its not considering it as an number and the output I am getting is:

3249_110

3249_10

3290_110

3290_10

code used:

<xsl:for-each select="DELIVERYHEADER">

<xsl:sort select="./EXTCUSTOMERNO"/>

<xsl:sort data-type="number" order="ascending" select="/EXTORDERNO"/>

<xsl:copy-of select=".">

</xsl:copy-of>

Please suggest.

Thanks!

Indu Khurana

Accepted Solutions (0)

Answers (1)

Answers (1)

stefan_grube
Active Contributor
0 Kudos

You can use data-type "text".

As you have two sort in the XSLT, I wonder how your source structure looks like.

Former Member
0 Kudos

Source:

<?xml version="1.0" encoding="ISO-8859-1"?>

<ORIONSHIPMENTS>

<TRIP>

<ACTION>I</ACTION>

<SHIFTNO>1</SHIFTNO>

<SEQUENCENO>1</SEQUENCENO>

<DATE>2010-12-20 00:00:00</DATE>

<STARTDATE>2010-12-20 06:00:00</STARTDATE>

<ENDDATE>2010-12-20 14:54:00</ENDDATE>

<TRIPNO>10</TRIPNO>

<TRIPMNEMONIC/>

<DRIVERID>DRIVERORT2</DRIVERID>

<DRIVERNO>DRIVERORT2</DRIVERNO>

<EXTDRIVERNO>12345</EXTDRIVERNO>

<TRUCKID>Truck 01</TRUCKID>

<TRUCKNO>Truck 01</TRUCKNO>

<EXTTRUCKNO>5002053</EXTTRUCKNO>

<TRAILERID>Trailer 2</TRAILERID>

<TRAILERNO>Trailer 2</TRAILERNO>

<EXTTRAILERNO>ORTEC00002</EXTTRAILERNO>

<DELIVERYCT>2</DELIVERYCT>

<LOADCT>1</LOADCT>

<STARTDEPOTNO>GHENT_N</STARTDEPOTNO>

<EXTSTARTDEPOTNO>4020</EXTSTARTDEPOTNO>

<ENDDEPOTNO>GHENT_N</ENDDEPOTNO>

<EXTENDDEPOTNO>4020</EXTENDDEPOTNO>

<STARTLOCATIONNO>GHENT_N</STARTLOCATIONNO>

<EXTSTARTLOCATIONNO>4020</EXTSTARTLOCATIONNO>

<ENDLOCATIONNO>GHENT_N</ENDLOCATIONNO>

<EXTENDLOCATIONNO/>

<ANCILLARYTIME>0</ANCILLARYTIME>

<LOADINGTIME>0</LOADINGTIME>

<DISCHARGETIME>245</DISCHARGETIME>

<DRIVETIME>289</DRIVETIME>

<DISTANCE>0</DISTANCE>

<LOADINGSTARTED>0</LOADINGSTARTED>

<COMMENT/>

<LOAD>

<ACTION>I</ACTION>

<LOADID />

<LOADIDADD />

<SEQUENCENO>0</SEQUENCENO>

<LOADINGDEPOTNO>GHENT_N</LOADINGDEPOTNO>

<EXTLOADINGDEPOTNO>4020</EXTLOADINGDEPOTNO>

<LOADINGPOINT />

<AUTHORISATIONCODE />

<COMPARTMENTTO>

<COMPARTMENTNO>1</COMPARTMENTNO>

<PRODUCTNO>401611</PRODUCTNO>

<EXTPRODUCTNO>000000000000401611</EXTPRODUCTNO>

<VOLUME>65</VOLUME>

<UOM>LT</UOM>

</COMPARTMENTTO>

</LOAD>

<DELIVERYHEADER>

<ACTION>I</ACTION>

<SEQUENCENO>1</SEQUENCENO>

<ORDERNO>3949_20</ORDERNO>

<EXTORDERNO>3949_201</EXTORDERNO>

<CUSTORDERNO>01.01 Crea</CUSTORDERNO>

<CUSTOMERNO>0050000001</CUSTOMERNO>

<EXTCUSTOMERNO>0050000001</EXTCUSTOMERNO>

<DELIVERYNAME>TEST ORTEC</DELIVERYNAME>

<DELIVERYADDRESS1>Rue de Belgique</DELIVERYADDRESS1>

<DELIVERYADDRESS2/>

<DELIVERYADDRESS3/>

<DELIVERYPOSTCODE/>

<DELIVERYTOWN/>

<DELIVERYCOUNTRY>BE</DELIVERYCOUNTRY>

<INVOICENAME/>

<INVOICEADDRESS1/>

<INVOICEADDRESS2/>

<INVOICEADDRESS3/>

<INVOICEPOSTCODE/>

<INVOICETOWN/>

<INVOICECOUNTRY/>

<PHONENUMBER1/>

<PHONENUMBER2>0</PHONENUMBER2>

<TAXCODE />

<CUSTOMERCOMMENTS>0013</CUSTOMERCOMMENTS>

<DELIVERYCOMMENTS/>

<DOCUMENTTYPE>2</DOCUMENTTYPE>

<DELIVERYWINDOWSTARTDATE>2010-12-20 00:00:00</DELIVERYWINDOWSTARTDATE>

<DELIVERYWINDOWENDDATE>2010-12-20 23:59:00</DELIVERYWINDOWENDDATE>

<DELIVERYLINECT>1</DELIVERYLINECT>

<DELIVERYAUTHORISATIONREQUIRED/>

<CUSTOMERLANGUAGE/>

<CONTACTNAME/>

<COMPANYREFERENCE/>

<CUSTOMERTAXNO/>

<FISCALDELIVERY>0</FISCALDELIVERY>

<PAYMENTMETHOD>0</PAYMENTMETHOD>

<PAYMENTDAYSDUE>999</PAYMENTDAYSDUE>

<CURRENCY/>

<CALLBEFOREDELIVERY>0</CALLBEFOREDELIVERY>

<GEOFENCEDISTANCE>0</GEOFENCEDISTANCE>

<GEOFENCEPHONE/>

<SITEACCESSGRADE/>

<NORMALTAXRATE/>

<SPECIALTAXRATE>0</SPECIALTAXRATE>

<DISCOUNT>0</DISCOUNT>

<SIGNATURECAPTURED/>

<DISTANCELOADINGDEPOT>184</DISTANCELOADINGDEPOT>

<DRIVETIMELOADINGDEPOT>145</DRIVETIMELOADINGDEPOT>

<DISTANCENEXTSTOP>0</DISTANCENEXTSTOP>

<DRIVETIMENEXTSTOP>0</DRIVETIMENEXTSTOP>

<LOADRELEVANT/>

<DELIVERYLINE>

<ACTION>I</ACTION>

<MOVEMENTNO>3949_20001</MOVEMENTNO>

<EXTMOVEMENTNO>3949_20</EXTMOVEMENTNO>

<PRODUCTNO>401611</PRODUCTNO>

<EXTPRODUCTNO>000000000000401611</EXTPRODUCTNO>

<PLANNEDQTY>20</PLANNEDQTY>

<UOM>LT</UOM>

<PRICEPERUNIT/>

<DISCOUNT/>

<COMMENTS/>

<COMPARTMENTFROM>

<COMPARTMENTNO>1</COMPARTMENTNO>

<VOLUME>0</VOLUME>

<TANKNO>1</TANKNO>

<EXTTANKNO>1</EXTTANKNO>

<TANKID>259454</TANKID>

<TANKLABEL/>

<PRODUCTNO>401611</PRODUCTNO>

<EXTPRODUCTNO>000000000000401611</EXTPRODUCTNO>

<UOM>LT</UOM>

</COMPARTMENTFROM>

</DELIVERYLINE>

</DELIVERYHEADER>

<DELIVERYHEADER>

<ACTION>I</ACTION>

<SEQUENCENO>2</SEQUENCENO>

<ORDERNO>3949_110</ORDERNO>

<EXTORDERNO>3949_110</EXTORDERNO>

<CUSTORDERNO>01.01 Crea</CUSTORDERNO>

<CUSTOMERNO>0050000001</CUSTOMERNO>

<EXTCUSTOMERNO>0050000001</EXTCUSTOMERNO>

<DELIVERYNAME>TEST ORTEC</DELIVERYNAME>

<DELIVERYADDRESS1>Rue de Belgique</DELIVERYADDRESS1>

<DELIVERYADDRESS2/>

<DELIVERYADDRESS3/>

<DELIVERYPOSTCODE/>

<DELIVERYTOWN/>

<DELIVERYCOUNTRY>BE</DELIVERYCOUNTRY>

<INVOICENAME/>

<INVOICEADDRESS1/>

<INVOICEADDRESS2/>

<INVOICEADDRESS3/>

<INVOICEPOSTCODE/>

<INVOICETOWN/>

<INVOICECOUNTRY/>

<PHONENUMBER1/>

<PHONENUMBER2>0</PHONENUMBER2>

<TAXCODE />

<CUSTOMERCOMMENTS>0013</CUSTOMERCOMMENTS>

<DELIVERYCOMMENTS/>

<DOCUMENTTYPE>2</DOCUMENTTYPE>

<DELIVERYWINDOWSTARTDATE>2010-12-20 00:00:00</DELIVERYWINDOWSTARTDATE>

<DELIVERYWINDOWENDDATE>2010-12-20 23:59:00</DELIVERYWINDOWENDDATE>

<DELIVERYLINECT>1</DELIVERYLINECT>

<DELIVERYAUTHORISATIONREQUIRED/>

<CUSTOMERLANGUAGE/>

<CONTACTNAME/>

<COMPANYREFERENCE/>

<CUSTOMERTAXNO/>

<FISCALDELIVERY>0</FISCALDELIVERY>

<PAYMENTMETHOD>0</PAYMENTMETHOD>

<PAYMENTDAYSDUE>999</PAYMENTDAYSDUE>

<CURRENCY/>

<CALLBEFOREDELIVERY>0</CALLBEFOREDELIVERY>

<GEOFENCEDISTANCE>0</GEOFENCEDISTANCE>

<GEOFENCEPHONE/>

<SITEACCESSGRADE/>

<NORMALTAXRATE/>

<SPECIALTAXRATE>0</SPECIALTAXRATE>

<DISCOUNT>0</DISCOUNT>

<SIGNATURECAPTURED/>

<DISTANCELOADINGDEPOT>184</DISTANCELOADINGDEPOT>

<DRIVETIMELOADINGDEPOT>145</DRIVETIMELOADINGDEPOT>

<DISTANCENEXTSTOP>173</DISTANCENEXTSTOP>

<DRIVETIMENEXTSTOP>144</DRIVETIMENEXTSTOP>

<LOADRELEVANT/>

<DELIVERYLINE>

<ACTION>I</ACTION>

<MOVEMENTNO>3949_110001</MOVEMENTNO>

<EXTMOVEMENTNO>3949_110</EXTMOVEMENTNO>

<PRODUCTNO>401611</PRODUCTNO>

<EXTPRODUCTNO>000000000000401611</EXTPRODUCTNO>

<PLANNEDQTY>45</PLANNEDQTY>

<UOM>LT</UOM>

<PRICEPERUNIT/>

<DISCOUNT/>

<COMMENTS/>

<COMPARTMENTFROM>

<COMPARTMENTNO>1</COMPARTMENTNO>

<VOLUME>0</VOLUME>

<TANKNO>1</TANKNO>

<EXTTANKNO>1</EXTTANKNO>

<TANKID>259454</TANKID>

<TANKLABEL/>

<PRODUCTNO>401611</PRODUCTNO>

<EXTPRODUCTNO>000000000000401611</EXTPRODUCTNO>

<UOM>LT</UOM>

</COMPARTMENTFROM>

</DELIVERYLINE>

</DELIVERYHEADER>

</TRIP>

</ORIONSHIPMENTS>

stefan_grube
Active Contributor
0 Kudos

There are several issues in your XSLT:

- you have to sort statements, this is not useful.

- you have data-type="number", this requires a real number

- you have select="/EXTORDERNO" it should be select="EXTORDERNO" or select="./EXTORDERNO"

try

<xsl:sort select="EXTORDERNO"/>