Re: Generating table rows html from variable selected
At 10:37 PM 2/8/2005, you wrote:
I understand how to select the elements with not(text()) and to use an Xpath expression to make a new row every
This is a pattern I've been using myself lately, to generate labels (effectively, same problem):
<xsl:template name="rowsof4"> <xsl:param name="nodes" select="/self::*"/> <!-- the default is a fancy way of saying 'no nodes' (by asking for the root node that is an element) --> <xsl:for-each select="$nodes"> <xsl:variable name="node-position" select="position()"/> <xsl:if test="$node-position mod 4 = 1"> <tr> <xsl:apply-templates mode="cell" select=". | $nodes[$node-position + 1] | $nodes[$node-position + 2] | $nodes[$node-position + 3]"/> </tr> </xsl:for-each> </xsl:template>
<xsl:call-template name="rowsof4"> <xsl:with-param name="nodes" select="$the-elements-you-want-in-your-rows]"/> </xsl:call-template>
... leaving the rest (e.g. the "cell" mode) for you to fill in.
If you wanted to parameterize the rows template so it could build a row of any number of cells (passed in as another parameter) -- that could be done.
Note that this doesn't fill in "empty" cells when your set falls short (not necessary for my labels app) ... that could be added too.
I hope this helps!
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format