Sort part of xml document using XSLT
Hello Everybody,
I am new to XSLT and would like to transform from one xml to another xml document. During transformation, part of the xml document is to be retained as-is while another part of the xml document is to be sorted based on a particular element.
Please find below the input xml and the required output xml document.
In the input.xml file below, all the tags above <COUPON></COUPON> element to be retained as-is.
Inside <COUPON></COUPON> tags, we have <COUPON_NUMBER></COUPON_NUMBER> tag. This tag holds number values and the requirement is that these <COUPONS> should be sorted in ascending order based on <COUPON_NUMBER> values.
Any help is highly appreciated.
input.xml file
----------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<PNAME>
<V01_P1FNAME>ABC</V01_P1FNAME>
<V02_P1LNAME>DEF</V02_P1LNAME>
</PNAME>
<ADDRESS>
<V03_ADDRESS1>HOME</V03_ADDRESS1>
<V04_ADDRESS2/>
<V05_CITY>HOME</V05_CITY>
<V06_STATE>XY</V06_STATE>
<V07_ZIP>12345</V07_ZIP>
</ADDRESS>
<V08_DATE>07-AUG-14</V08_DATE>
<V09_ACCOUNT>1014591588</V09_ACCOUNT>
<LANGUAGE_CODE>en</LANGUAGE_CODE>
<VERSION>1</VERSION>
<D02/>
<D03>Y</D03>
<ATTACHMENT/>
<LETTERTYPE>F63</LETTERTYPE>
<FCOUP>Y</FCOUP>
<FCV>N</FCV>
<FCV2>N</FCV2>
<FEV/>
<FHIPP>N</FHIPP>
<FICL>N</FICL>
<FIDEN>N</FIDEN>
<FIV>N</FIV>
<FSEMP>N</FSEMP>
<V116_FPDAMOUNT>20</V116_FPDAMOUNT>
<V27_CMDATE/>
<V28_PDDATE>01-JUN-15</V28_PDDATE>
<FCV_ACFNAME/>
<FCV_D01>N</FCV_D01>
<FCV2_ACFNAME/>
<COUPON>
<COUPON_NUMBER>2</COUPON_NUMBER>
<V27_CMDATE>01-SEP-14</V27_CMDATE>
<V28_PDDATE>01-AUG-14</V28_PDDATE>
<V116_FPDAMOUNT> 20.00</V116_FPDAMOUNT>
</COUPON>
<COUPON>
<COUPON_NUMBER>3</COUPON_NUMBER>
<V27_CMDATE>01-OCT-14</V27_CMDATE>
<V28_PDDATE>01-SEP-14</V28_PDDATE>
<V116_FPDAMOUNT> 20.00</V116_FPDAMOUNT>
</COUPON>
<COUPON>
<COUPON_NUMBER>1</COUPON_NUMBER>
<V27_CMDATE>01-AUG-14</V27_CMDATE>
<V28_PDDATE>01-JUL-14</V28_PDDATE>
<V116_FPDAMOUNT> 20.00</V116_FPDAMOUNT>
</COUPON>
</root>
output.xml file
-------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<PNAME>
<V01_P1FNAME>ABC</V01_P1FNAME>
<V02_P1LNAME>DEF</V02_P1LNAME>
</PNAME>
<ADDRESS>
<V03_ADDRESS1>HOMESLESS</V03_ADDRESS1>
<V04_ADDRESS2/>
<V05_CITY>HOMELESS</V05_CITY>
<V06_STATE>AB</V06_STATE>
<V07_ZIP>12345</V07_ZIP>
</ADDRESS>
<V08_DATE>07-AUG-14</V08_DATE>
<V09_ACCOUNT>1014591588</V09_ACCOUNT>
<LANGUAGE_CODE>en</LANGUAGE_CODE>
<VERSION>1</VERSION>
<D02/>
<D03>Y</D03>
<ATTACHMENT/>
<LETTERTYPE>F63</LETTERTYPE>
<FCOUP>Y</FCOUP>
<FCV>N</FCV>
<FCV2>N</FCV2>
<FEV/>
<FHIPP>N</FHIPP>
<FICL>N</FICL>
<FIDEN>N</FIDEN>
<FIV>N</FIV>
<FSEMP>N</FSEMP>
<V116_FPDAMOUNT>20</V116_FPDAMOUNT>
<V27_CMDATE/>
<V28_PDDATE>01-JUN-15</V28_PDDATE>
<FCV_ACFNAME/>
<FCV_D01>N</FCV_D01>
<FCV2_ACFNAME/>
<COUPON>
<COUPON_NUMBER>1</COUPON_NUMBER>
<V27_CMDATE>01-AUG-14</V27_CMDATE>
<V28_PDDATE>01-JUL-14</V28_PDDATE>
<V116_FPDAMOUNT> 20.00</V116_FPDAMOUNT>
</COUPON>
<COUPON>
<COUPON_NUMBER>2</COUPON_NUMBER>
<V27_CMDATE>01-SEP-14</V27_CMDATE>
<V28_PDDATE>01-AUG-14</V28_PDDATE>
<V116_FPDAMOUNT> 20.00</V116_FPDAMOUNT>
</COUPON>
<COUPON>
<COUPON_NUMBER>3</COUPON_NUMBER>
<V27_CMDATE>01-OCT-14</V27_CMDATE>
<V28_PDDATE>01-SEP-14</V28_PDDATE>
<V116_FPDAMOUNT> 20.00</V116_FPDAMOUNT>
</COUPON>
</root>
Thank you.
MG
|