|
Subject: [xsl] Grouping Problem From: "Alistair Rodrigues" <alistair.rodrigues@xxxxxxxxx> Date: Tue, 7 Nov 2006 15:24:01 +0300 |
This is my XML File:
<?xml version="1.0" encoding="UTF-8"?>
<acclist>
<acc>
<code>3709</code>
<name>Hotel 3709</name>
<location>
<destination>
<code>Dest1</code>
<name>dest 1</name>
</destination>
<zone>
<code>zone1</code>
<name>zone 1</name>
</zone>
</location>
<category>
<code>4sta</code>
<name>4 STARS</name>
</category>
<room>
<code>TPL.SU</code>
<name>TRIPLE SUPERIOR</name>
<occupancy>
<adults>3</adults>
<children>0</children>
<rooms>1</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>99.96</price>
</cost>
</room>
<room>
<code>DBL.SU</code>
<name>DOUBLE/ TWIN SUPERIOR</name>
<occupancy>
<adults>2</adults>
<children>0</children>
<rooms>1</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>65.00</price>
</cost>
</room>
<room>
<code>TPL.ST</code>
<name>TRIPLE STANDARD</name>
<occupancy>
<adults>3</adults>
<children>0</children>
<rooms>1</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>128.98</price>
</cost>
</room>
<room>
<code>DBL.ST</code>
<name>DOUBLE/ TWIN STANDARD</name>
<occupancy>
<adults>2</adults>
<children>0</children>
<rooms>1</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>99.96</price>
</cost>
</room>
<room>
<code>DBL.SU</code>
<name>DOUBLE/ TWIN SUPERIOR</name>
<occupancy>
<adults>1</adults>
<children>0</children>
<rooms>2</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>70.94</price>
</cost>
</room>
<room>
<code>DBL.ST</code>
<name>DOUBLE/ TWIN STANDARD</name>
<occupancy>
<adults>1</adults>
<children>0</children>
<rooms>2</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>99.96</price>
</cost>
</room>
</acc>
<acc>
<code>725</code>
<name>Hotel 725</name>
<location>
<destination>
<code>dest1</code>
<name>dest 1</name>
</destination>
<zone>
<code>zone3</code>
<name>zone 3</name>
</zone>
</location>
<category>
<code>3sta</code>
<name>3 STARS</name>
</category>
<room>
<code>TPL.SU</code>
<name>TRIPLE SUPERIOR</name>
<occupancy>
<adults>3</adults>
<children>0</children>
<rooms>1</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>97.81</price>
</cost>
</room>
<room>
<code>DBL.SU</code>
<name>DOUBLE/ TWIN SUPERIOR</name>
<occupancy>
<adults>2</adults>
<children>0</children>
<rooms>1</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>65.56</price>
</cost>
</room>
<room>
<code>SGL.SU</code>
<name>SINGLE SUPERIOR</name>
<occupancy>
<adults>1</adults>
<children>0</children>
<rooms>2</rooms>
</occupancy>
<cost>
<board>
<code>HD</code>
<name>BED AND BREAKFAST</name>
</board>
<currency>USD</currency>
<price>56.96</price>
</cost>
</room>
</acc>
</acclist><?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" omit-xml-declaration="yes"/> <xsl:template match="text()"> <xsl:value-of select="." /> </xsl:template> <xsl:template match="acclist/acc"> <xsl:variable name="HotelCode" select="code"/> <br/> <table width="100%" border="0" class="TableBorders"> <xsl:for-each select="room"> <xsl:sort order="ascending" data-type="text" select="cost/board/code"/> <xsl:sort order="descending" data-type="text" select="substring-after(code,'.')"/> <xsl:sort order="ascending" data-type="number" select="occupancy/adults"/> <xsl:sort order="ascending" data-type="number" select="occupancy/children"/> <xsl:sort order="ascending" data-type="number" select="occupancy/rooms"/>
<xsl:variable name="rtype" select="code"/>
<tr class="TableData">
<td colspan="2"><xsl:value-of select="name"/></td>
<td width="31%"></td>
<td width="13%"></td>
</tr>
<xsl:for-each select="cost">
<xsl:variable name="amt" select="price" />
<xsl:variable name="famt"
select="format-number($amt, '###,###,###.##')"/>
<xsl:variable name="curr" >
<xsl:choose>
<xsl:when
test="currency='EUR'"><xsl:text></xsl:text></xsl:when>
<xsl:when
test="currency='USD'"><xsl:text>$</xsl:text></xsl:when>
<xsl:when
test="currency='GBP'"><xsl:text>#</xsl:text></xsl:when>
<xsl:when
test="currency='YEN'"><xsl:text>%</xsl:text></xsl:when>
<xsl:otherwise><xsl:value-of
select="currency"/></xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="TableData">
<td width="48%"></td>
<td width="8%"><xsl:value-of
select="board/code"/></td>
<td><xsl:value-of
select="$curr"/><xsl:text> </xsl:text><xsl:value-of
select="$famt"/></td>
<td></td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet><br><table width="100%" border="0" class="TableBorders"> <tr class="TableData"> <td colspan="2">DOUBLE/ TWIN SUPERIOR</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 70.94</td> <td></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">RO</td> <td>$ 79.96</td> <td></td> </tr> <tr class="TableData"> <td colspan="2">DOUBLE/ TWIN SUPERIOR</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 65</td> <td></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">RO</td> <td>$ 62</td> <td></td> </tr> <tr class="TableData"> <td colspan="2">TRIPLE SUPERIOR</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 99.96</td> <td></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">RO</td> <td>$ 99.96</td> <td></td> </tr> <tr class="TableData"> <td colspan="2">DOUBLE/ TWIN STANDARD</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 99.96</td> <td></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">RO</td> <td>$ 99.96</td> <td></td> </tr> <tr class="TableData"> <td colspan="2">DOUBLE/ TWIN STANDARD</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 99.96</td> <td></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">RO</td> <td>$ 79.96</td> <td></td> </tr> <tr class="TableData"> <td colspan="2">TRIPLE STANDARD</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 128.98</td> <td></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">RO</td> <td>$ 102</td> <td></td> </tr> </table> <br><table width="100%" border="0" class="TableBorders"> <tr class="TableData"> <td colspan="2">SINGLE SUPERIOR</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 56.96</td> <td></td> </tr> <tr class="TableData"> <td colspan="2">DOUBLE/ TWIN SUPERIOR</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 65.56</td> <td></td> </tr> <tr class="TableData"> <td colspan="2">TRIPLE SUPERIOR</td> <td width="31%"></td> <td width="13%"></td> </tr> <tr class="TableData"> <td width="48%"></td> <td width="8%">HD</td> <td>$ 97.81</td> <td></td> </tr> </table>
I had made the XSL to display each room type(i.e. room/code) separately & separate it in an ascending order of board type(i.e.board/code) and later Adults, Children & rooms. As shown above in the HTML Code above. But i cant separate the Board type(i.e. Board/code)
<table width="100%" border="0" class="TableBorders">
<tr class="TableData">
<td colspan="4"><TABLE WIDTH="100%" BORDER="0" CELLSPACING="0"
CELLPADDING="0">
<TR>
<TD WIDTH="14%"> </TD>
<TD WIDTH="34%">DOUBLE/ TWIN SUPERIOR</TD>
<TD WIDTH="19%" ALIGN="RIGHT">$ 70.94</TD>
<TD WIDTH="33%"> </TD>
</TR>
<TR>
<TD> </TD>
<TD>DOUBLE/ TWIN SUPERIOR</TD>
<TD ALIGN="RIGHT">$ 65.00</TD>
<TD> </TD>
</TR>
<TR>
<TD> </TD>
<TD>TRIPLE SUPERIOR</TD>
<TD ALIGN="RIGHT">$ 99.96</TD>
<TD> </TD>
</TR>
</TABLE></td>
</tr>
<tr class="TableData">
<td width="30%"></td>
<td width="37%">HD</td>
<td WIDTH="18%">$ 235.90</td>
<td WIDTH="15%"> </td>
</tr>
<tr class="TableData">
<td colspan="4"><TABLE WIDTH="100%" BORDER="0" CELLSPACING="0"
CELLPADDING="0">
<TR>
<TD WIDTH="14%"> </TD>
<TD WIDTH="34%">SINGLE STANDARD</TD>
<TD WIDTH="19%" ALIGN="RIGHT">$ 99.96</TD>
<TD WIDTH="33%"> </TD>
</TR>
<TR>
<TD> </TD>
<TD>DOUBLE/ TWIN STANDARD</TD>
<TD ALIGN="RIGHT">$ 99.96</TD>
<TD> </TD>
</TR>
<TR>
<TD> </TD>
<TD>TRIPLE STANDARD</TD>
<TD ALIGN="RIGHT">$128.98</TD>
<TD> </TD>
</TR>
</TABLE></td>
</tr>
<tr class="TableData">
<td width="30%"></td> <td width="37%">HD</td>
<td>$ 328.90</td>
<td> </td>
</tr>
<tr class="TableData">
<td colspan="4"><TABLE WIDTH="100%" BORDER="0" CELLSPACING="0"
CELLPADDING="0">
<TR>
<TD WIDTH="14%"> </TD>
<TD WIDTH="34%">DOUBLE/ TWIN SUPERIOR</TD>
<TD WIDTH="19%" ALIGN="RIGHT">$ 79.96</TD>
<TD WIDTH="33%"> </TD>
</TR>
<TR>
<TD> </TD>
<TD>DOUBLE/ TWIN SUPERIOR</TD>
<TD ALIGN="RIGHT">$ 62.00</TD>
<TD> </TD>
</TR>
<TR>
<TD> </TD>
<TD>TRIPLE SUPERIOR</TD>
<TD ALIGN="RIGHT">$ 99.96</TD>
<TD> </TD>
</TR>
</TABLE></td>
</tr>
<tr class="TableData">
<td width="30%"></td> <td WIDTH="18%">$ 241.92</td>
<td WIDTH="15%"> </td>
</tr>
<tr class="TableData">
<td colspan="4"><TABLE WIDTH="100%" BORDER="0" CELLSPACING="0"
CELLPADDING="0">
<TR>
<TD WIDTH="14%"> </TD>
<TD WIDTH="34%">SINGLE sTANDARD</TD>
<TD WIDTH="19%" ALIGN="RIGHT">$ 79.96</TD>
<TD WIDTH="33%"> </TD>
</TR>
<TR>
<TD> </TD>
<TD>DOUBLE/ TWIN STANDARD</TD>
<TD ALIGN="RIGHT">$ 62.00</TD>
<TD> </TD>
</TR>
<TR>
<TD> </TD>
<TD>TRIPLE STANDARD</TD>
<TD ALIGN="RIGHT">$ 99.96</TD>
<TD> </TD>
</TR>
</TABLE></td>
</tr>
<tr class="TableData">
<td width="30%"></td>
<td width="37%">RO</td>
<td>$ 241.92</td>
<td> </td>
</tr>
</table>
<BR><table width="100%" border="0" class="TableBorders">
<tr class="TableData">
<td colspan="4"><TABLE WIDTH="100%" BORDER="0" CELLSPACING="0"
CELLPADDING="0">
<TR>
<TD WIDTH="14%"> </TD>
<TD WIDTH="34%">DOUBLE/ TWIN SUPERIOR</TD>
<TD WIDTH="19%" ALIGN="RIGHT">$ 56.96</TD>
<TD WIDTH="33%"> </TD>
</TR>
<TR>
<TD> </TD>
<TD>DOUBLE/ TWIN SUPERIOR</TD>
<TD ALIGN="RIGHT">$ 65.56</TD>
<TD> </TD>
</TR>
<TR>
<TD> </TD>
<TD>TRIPLE SUPERIOR</TD>
<TD ALIGN="RIGHT">$ 97.81</TD>
<TD> </TD>
</TR>
</TABLE></td>
</tr>
<tr class="TableData">
<td width="30%"></td>
<td width="37%">HD</td> <td WIDTH="18%">$ 220.33</td>
<td WIDTH="15%"> </td>
</tr>
</table>i want that the superior rooms should be in one group and the standard in one group.and i also want to group all the room types belonging to a particular boardtype in one boardtype group.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] How to define a custom co, Michael Kay | Thread | [xsl] xslt 1.1 xsl:document, tom tom |
| RE: [xsl] How to define a custom co, Michael Kay | Date | [xsl] xslt 1.1 xsl:document, tom tom |
| Month |