Re: [xsl] Generating table rows html from variable selected input.

Subject: Re: [xsl] Generating table rows html from variable selected input.
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Wed, 09 Feb 2005 11:21:49 -0500
Hi David,

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
four items, but I do not see how to select a run of content-less
elements that need to be treated that way.

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">
       <xsl:apply-templates mode="cell"
          select=". | $nodes[$node-position + 1]
                    | $nodes[$node-position + 2]
                    | $nodes[$node-position + 3]"/>


<xsl:call-template name="rowsof4">
  <xsl:with-param name="nodes" select="$the-elements-you-want-in-your-rows]"/>

... 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!


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================

Current Thread