| Nic Miloslav Example 81 | KEYWORDS EXAMPLES AUTHORS |
|---|
Stylesheet 1 generates a table with selected elements,
with the number of elements per row given in the stylesheet. If the elements should be sorted, the solution is more complex (Stylesheet 2).
| XML | HOME XSL 1 XSL 2 |
|---|
| <xslTutorial > |
| <data> |
| <item>Fe</item> |
| <item>Cl</item> |
| <item>Br</item> |
| <item>I</item> |
| <item>Ni</item> |
| <item>H</item> |
| <item>Po</item> |
| <item>S</item> |
| <item>O</item> |
| </data> |
| </xslTutorial> |
| XSL 1 | HOME XML HTML 1 OUTPUT 1 |
|---|
| <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'> |
| <xsl:template match="/"> |
| <TABLE border='1'> |
| <xsl:variable name="inRow" select='3'/> |
| <xsl:apply-templates select="//item[position() mod $inRow = 1]"> |
| <xsl:with-param name='inRow' select='$inRow'/> |
| </xsl:apply-templates> |
| </TABLE> |
| <TABLE border='1'> |
| <xsl:variable name="inRow" select='4'/> |
| <xsl:apply-templates select="//item[position() mod $inRow = 1]"> |
| <xsl:with-param name='inRow' select='$inRow'/> |
| </xsl:apply-templates> |
| </TABLE> |
| <TABLE border='1'> |
| <xsl:variable name="inRow" select='5'/> |
| <xsl:apply-templates select="//item[position() mod $inRow = 1]"> |
| <xsl:with-param name='inRow' select='$inRow'/> |
| </xsl:apply-templates> |
| </TABLE> |
| </xsl:template> |
| <xsl:template match="item"> |
| <xsl:param name="inRow"/> |
| <TR> |
| <TD><xsl:value-of select="."/></TD> |
| <xsl:apply-templates select="following::item[position() < $inRow]" mode='cell'/> |
| </TR> |
| </xsl:template> |
| <xsl:template match="item" mode='cell'> |
| <xsl:param name="inRow"/> |
| <TD><xsl:value-of select="."/></TD> |
| </xsl:template> |
| </xsl:stylesheet> |
| HTML 1 | HOME XML XSL 1 OUTPUT 1 |
|---|
| <TABLE border="1"> |
| <TR> |
| <TD>Fe</TD> |
| <TD>Cl</TD> |
| <TD>Br</TD></TR> |
| <TR> |
| <TD>I</TD> |
| <TD>Ni</TD> |
| <TD>H</TD></TR> |
| <TR> |
| <TD>Po</TD> |
| <TD>S</TD> |
| <TD>O</TD></TR></TABLE> |
| <TABLE border="1"> |
| <TR> |
| <TD>Fe</TD> |
| <TD>Cl</TD> |
| <TD>Br</TD> |
| <TD>I</TD></TR> |
| <TR> |
| <TD>Ni</TD> |
| <TD>H</TD> |
| <TD>Po</TD> |
| <TD>S</TD></TR> |
| <TR> |
| <TD>O</TD></TR></TABLE> |
| <TABLE border="1"> |
| <TR> |
| <TD>Fe</TD> |
| <TD>Cl</TD> |
| <TD>Br</TD> |
| <TD>I</TD> |
| <TD>Ni</TD></TR> |
| <TR> |
| <TD>H</TD> |
| <TD>Po</TD> |
| <TD>S</TD> |
| <TD>O</TD></TR></TABLE> |
| OUTPUT 1 | HOME XML XSL 1 HTML 1 |
|---|
| Fe | Cl | Br |
| I | Ni | H |
| Po | S | O |
| Fe | Cl | Br | I |
| Ni | H | Po | S |
| O |
| Fe | Cl | Br | I | Ni |
| H | Po | S | O |
| XSL 2 | HOME XML HTML 2 OUTPUT 2 |
|---|
| HTML 2 | HOME XML XSL 2 OUTPUT 2 |
|---|
| <TABLE border="1"> |
| <TR> |
| <TD>Br</TD> |
| <TD>Cl</TD> |
| <TD>Fe</TD> |
| <TD/></TR> |
| <TR> |
| <TD>H</TD> |
| <TD>I</TD> |
| <TD>Ni</TD> |
| <TD/></TR> |
| <TR> |
| <TD>O</TD> |
| <TD>Po</TD> |
| <TD>S</TD> |
| <TD/></TR> |
| <TR> |
| <TD/></TR></TABLE> |
| <TABLE border="1"> |
| <TR> |
| <TD>Br</TD> |
| <TD>Cl</TD> |
| <TD>Fe</TD> |
| <TD>H</TD> |
| <TD/></TR> |
| <TR> |
| <TD>I</TD> |
| <TD>Ni</TD> |
| <TD>O</TD> |
| <TD>Po</TD> |
| <TD/></TR> |
| <TR> |
| <TD>S</TD> |
| <TD/></TR> |
| <TR> |
| <TD/></TR></TABLE> |
| <TABLE border="1"> |
| <TR> |
| <TD>Br</TD> |
| <TD>Cl</TD> |
| <TD>Fe</TD> |
| <TD>H</TD> |
| <TD>I</TD> |
| <TD/></TR> |
| <TR> |
| <TD>Ni</TD> |
| <TD>O</TD> |
| <TD>Po</TD> |
| <TD>S</TD> |
| <TD/></TR> |
| <TR> |
| <TD/></TR></TABLE> |
| OUTPUT 2 | HOME XML XSL 2 HTML 2 |
|---|
| Br | Cl | Fe | |
| H | I | Ni | |
| O | Po | S | |
| Br | Cl | Fe | H | |
| I | Ni | O | Po | |
| S | ||||
| Br | Cl | Fe | H | I | |
| Ni | O | Po | S | ||