I have this data:
Lines
Line
Item
ItemGroup = ABC
Line
Item
ItemGroup = DEF
Line
Item
ItemGroup = ABC
Line
Item
ItemGroup = GHI
I have the logic to (appear to) sort
Lines
Line
Item
ItemGroup = ABC
Line
Item
ItemGroup = ABC
Line
Item
ItemGroup = DEF
Line
Item
ItemGroup = GHI
However, it's not a true sorted list as the XML is still in the orginal order,
therefore the the preceding-sibling does not match what the sorted list is
showing and I then can't say if the the GroupCode is the same don't display the
Code, only the other Line data.
Cheers
-----Original Message-----
From: Chris Booth [mailto:Chris(_dot_)Booth(_at_)rentalresult(_dot_)com]
Sent: Thursday, December 13, 2012 10:31 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] XSL:FO - How to group and sort in XSL:FO on a sibling values
Hi,
I am after a little (actually a lot ) bit guidance and help please.
I am struggling with Axis on the Xpath and how to group and sort.
Using XSL:FO (1.0 on Xalan) I need to be able to group parts of my data
together and not show them where the match other entries
From the XML below, I am looking for a way where I loop over Lines/Line and
based on the value in LineGroup/GroupCode, if it's the first occurance of that
LineGroup/GroupCode then display the GroupDescription.
I am trying all sorts of variations on the below but with no joy-
<xsl:if test="mainGroupCodes != preceding-sibling::*/mainGroupCodes">
DISPLAY GROUP DESC
</xsl:if>
REQUIRED OUTPUT:
Main Group One
LINE DATA
LINE DATA
Main Group Two
LINE DATA
LINE DATA
Main Group Three
LINE DATA
LINE DATA
SAMPLE XML:
<Lines Type="Quote">
<Line Type="Quote">
<DocumentLine>1.00</DocumentLine>
<LineGroup>14.00</LineGroup>
<LineDisplaySequence>1</LineDisplaySequence>
<mainGroupCodes>1</mainGroupCodes>
<LineGroup>
<GroupId>14.00</GroupId>
<GroupCode>1</GroupCode>
<GroupDescription>Main Group One</GroupDescription>
<FloorGroup>1</FloorGroup>
<CeilingGroup>2</CeilingGroup>
<SubGroupLineValueTotal>8000.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>8000.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>31.00</DocumentLine>
<LineGroup>16.00</LineGroup>
<LineDisplaySequence>10</LineDisplaySequence>
<mainGroupCodes>3</mainGroupCodes>
<LineGroup>
<GroupId>16.00</GroupId>
<GroupCode>3</GroupCode>
<GroupDescription>Main Group Three</GroupDescription>
<FloorGroup>3</FloorGroup>
<CeilingGroup>4</CeilingGroup>
<SubGroupLineValueTotal>518.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>3806.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>2.00</DocumentLine>
<LineGroup>16.00</LineGroup>
<LineDisplaySequence>11</LineDisplaySequence>
<mainGroupCodes>3</mainGroupCodes>
<LineGroup>
<GroupId>16.00</GroupId>
<GroupCode>3</GroupCode>
<GroupDescription>Main Group Three</GroupDescription>
<FloorGroup>3</FloorGroup>
<CeilingGroup>4</CeilingGroup>
<SubGroupLineValueTotal>518.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>3806.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>13.00</DocumentLine>
<LineGroup>19.00</LineGroup>
<LineDisplaySequence>12</LineDisplaySequence>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>19.00</GroupId>
<GroupCode>4.1</GroupCode>
<GroupDescription>Sub group 1</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>4960.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>14.00</DocumentLine>
<LineGroup>19.00</LineGroup>
<LineDisplaySequence>13</LineDisplaySequence>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>19.00</GroupId>
<GroupCode>4.1</GroupCode>
<GroupDescription>Sub group 1</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>4960.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>15.00</DocumentLine>
<LineGroup>19.00</LineGroup>
<LineDisplaySequence>14</LineDisplaySequence>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>19.00</GroupId>
<GroupCode>4.1</GroupCode>
<GroupDescription>Sub group 1</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>4960.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>17.00</DocumentLine>
<LineGroup>19.00</LineGroup>
<LineDisplaySequence>15</LineDisplaySequence>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>19.00</GroupId>
<GroupCode>4.1</GroupCode>
<GroupDescription>Sub group 1</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>4960.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>23.00</DocumentLine>
<LineGroup>19.00</LineGroup>
<LineDisplaySequence>16</LineDisplaySequence>
<OriginalOrderLine>0.00</OriginalOrderLine>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>19.00</GroupId>
<GroupCode>4.1</GroupCode>
<GroupDescription>Sub group 1</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>4960.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>24.00</DocumentLine>
<LineGroup>20.00</LineGroup>
<LineDisplaySequence>17</LineDisplaySequence>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>20.00</GroupId>
<GroupCode>4.2</GroupCode>
<GroupDescription>Subgroup 2</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>0.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>25.00</DocumentLine>
<LineGroup>20.00</LineGroup>
<LineDisplaySequence>18</LineDisplaySequence>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>20.00</GroupId>
<GroupCode>4.2</GroupCode>
<GroupDescription>Subgroup 2</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>0.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>9.00</DocumentLine>
<LineGroup>21.00</LineGroup>
<LineDisplaySequence>19</LineDisplaySequence>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>21.00</GroupId>
<GroupCode>4.3</GroupCode>
<GroupDescription>Sub group 3</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>500.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>20.00</DocumentLine>
<LineGroup>14.00</LineGroup>
<LineDisplaySequence>2</LineDisplaySequence>
<mainGroupCodes>1</mainGroupCodes>
<LineGroup>
<GroupId>14.00</GroupId>
<GroupCode>1</GroupCode>
<GroupDescription>Main Group One</GroupDescription>
<FloorGroup>1</FloorGroup>
<CeilingGroup>2</CeilingGroup>
<SubGroupLineValueTotal>8000.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>8000.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
<Line Type="Quote">
<DocumentLine>8.00</DocumentLine>
<LineGroup>18.00</LineGroup>
<LineDisplaySequence>20</LineDisplaySequence>
<mainGroupCodes>4</mainGroupCodes>
<LineGroup>
<GroupId>18.00</GroupId>
<GroupCode>4</GroupCode>
<GroupDescription>Main Group 4</GroupDescription>
<FloorGroup>4</FloorGroup>
<CeilingGroup>5</CeilingGroup>
<SubGroupLineValueTotal>1574.00</SubGroupLineValueTotal>
<AllGroupLineValueTotal>7034.00</AllGroupLineValueTotal>
</LineGroup>
</Line>
</Lines>
*** This e-mail has been scanned for all viruses by MessageLabs. ***
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
*** This e-mail has been scanned for all viruses by MessageLabs. ***
*** This e-mail has been scanned for all viruses by MessageLabs. ***
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--