Subject:Regarding XSLT logic for a simple input XML message Author:amith swamy Date:14 Nov 2007 07:25 AM
We are facing an issue in XSL logic for a simple XML file. Please let us know about this.
If input XML has same elements that is repeating twice and should be mapped to the same element in the output XML..
For Ex:
If input XML is,
<?xml version="1.0"?>
<root>
<ReservationControlInformationSegment>
<CompanyId>AAH</CompanyId>
<ReservationControlNumber>ABC456789</ReservationControlNumber>
<CompanyId>AAH</CompanyId>
<ReservationControlNumber>ABC456789</ReservationControlNumber>
<ReservationControlType>B</ReservationControlType>
</ReservationControlInformationSegment>
</root>
In ReservationControlInformationSegment, three elements are there that can repeat any number of times(Consider 2 times). But in the above example for the first time, third element(ReservationControlType) is not present. Second time its present.
The expected output XML is
<root>
<RCI>
<RCI01>
<RCI0101>AAH</RCI0101>
<RCI0102>ABC456789</RCI0102>
</RCI01>
<RCI02>
<RCI0201>AAH</RCI0201>
<RCI0202>ABC456789</RCI0202>
<RCI0203>B</RCI0203>
</RCI02>
</RCI>
</root>
But the O/P is in the following format where extra <RCI0103/> is coming
<?xml version="1.0"?>
<root>
<RCI>
<RCI01>
<RCI0101>AAH</RCI0101>
<RCI0102>ABC456789</RCI0102>
<RCI0103/>
</RCI01>
<RCI02>
<RCI0201>AAH</RCI0201>
<RCI0202>ABC456789</RCI0202>
<RCI0203>B</RCI0203>
</RCI02>
</RCI>
</root>
This is because while checking for the if condition we are checking for the following sibling of CompanyId.
Can you please suggest if there is any better approach to solve this problem?