xsl-list
[Top] [All Lists]

Re: list of Values

2003-11-27 12:18:28
[ Charset ISO-8859-1 unsupported, converting... ]
Hi,
How can I create a list of values?

I want select n values from the xml file and put them in one list
to pass with-param to one template, something like this:

<xsl:call-template name="tempName">
    <xsl:with-param name="$paramName" select="$listValues"/>

</xsl:call-template>

where listValue have for exemple the elements 'a' , 'b', 'c', 'd'

after that I want  shift paramName to use each of these values...

If the values are present in the source XML file, then to accumulate 
the values in a data structure one can use node-set union operation.

One can later iterate (for-each) through the node-set or pass and increment
position in the node-set as a parameter for the template.

For example, the simple stylesheet below uses node-set 
to implement a grouping algorithm.

<xsl:transform 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
        version="1.0">

  <xsl:template name="group-n">

    <xsl:param name="e" select="."/>
    <xsl:param name="es" select="."/>
    <xsl:param name="i">1</xsl:param>
    <xsl:param name="n"/>
    <xsl:param name="group">group</xsl:param>

    <xsl:variable name="enext" select="$e/following-sibling::*[1]"/>

    <xsl:choose>
      <xsl:when test="$i = $n">
        <xsl:element name="{$group}">
          <xsl:apply-templates select="$e|$es"/>
        </xsl:element>
        <xsl:for-each select="$enext">
          <xsl:call-template name="group-n">
            <xsl:with-param name="group" select="$group"/>
            <xsl:with-param name="n" select="$n"/>
          </xsl:call-template>
        </xsl:for-each>
      </xsl:when>
      <xsl:otherwise>
        <xsl:call-template name="group-n">
          <xsl:with-param name="group" select="$group"/>
          <xsl:with-param name="i" select="$i+1"/>
          <xsl:with-param name="n" select="$n"/>
          <xsl:with-param name="e" select="$enext"/>
          <xsl:with-param name="es" select="$es|$enext"/>
        </xsl:call-template>
      </xsl:otherwise>
    </xsl:choose>

  </xsl:template>

</xsl:transform>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>