Subject: [xsl] Re: Re: loop in creation of table From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Thu, 27 Sep 2001 05:38:21 -0700 (PDT) |
> Thanks for your kindness to clean up my xslt redundant codes. > To make this piece of template be more generic, > a variable **source** is to define the xml-dependent tree structure. > So the template can be used without further touching, i.e., > <xsl:variable name="source" select="/parent-of-subsystem_id/subsystem_id" > /> > and use it as the value of select attribute. Meantimes the element abbr * > is used > with match. The test seems ok. But I wonder what might be missing from this > kind of approach. Thanks a lot, Sung Fu. The code seems good to me. Just a final thing: <xsl:apply-templates mode="normal" select="$nodes[position() >= $vCurPosition and (position() - $vCurPosition) mod $numCols = 0]" /> in our case is equivalent to: <xsl:apply-templates mode="normal" select="$nodes[(position() - $vCurPosition) mod $numCols = 0]" /> and the latter is shorter and more efficient. So the final version looks like this: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html"/> <xsl:param name="numCols" select="4" /> <xsl:variable name="source" select="/system/subsystem_id"/> <xsl:template match="/"> <table> <xsl:apply-templates mode="multiColumn" select="$source[position() <=$numCols]"> <xsl:with-param name="numCols" select="$numCols" /> <xsl:with-param name="nodes" select="$source" /> </xsl:apply-templates> </table> </xsl:template> <xsl:template mode="multiColumn" match="*"> <xsl:param name="numCols" select="1" /> <xsl:param name="nodes" select="/.." /> <xsl:variable name="vCurPosition" select="position()" /> <xsl:variable name="vColour"> <xsl:choose> <xsl:when test="$vCurPosition mod 2 = 1">aqua</xsl:when> <xsl:otherwise>red</xsl:otherwise> </xsl:choose> </xsl:variable> <tr bgcolor="{$vColour}"> <xsl:apply-templates mode="normal" select="$nodes[(position() - $vCurPosition) mod $numCols = 0]" /> </tr> </xsl:template> <xsl:template match="*" mode="normal"> <td> <xsl:value-of select="." /> </td> </xsl:template> </xsl:stylesheet> Cheers, Dimitre Novatchev. __________________________________________________ Do You Yahoo!? Listen to your Yahoo! Mail messages from any phone. http://phone.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Sort list based on matchi, Jeni Tennison | Thread | [xsl] Re: XSLT and parallel process, Dimitre Novatchev |
[xsl] Sort list based on matching e, Linda Zammit | Date | [xsl] Re: XSLT and parallel process, Dimitre Novatchev |
Month |