xsl-list
[Top] [All Lists]

Re: [xsl] compact code using loop

2008-03-19 02:02:20
On 19/03/2008, Mansour <mansour77(_at_)yahoo(_dot_)com> wrote:
I have repetitive code in my xslt. This code produces a list and does
 not depend on the input xml. I am wondering if there is a way to
 minimize this code. I can do it through for-each, but the element are in
 the xslt file and not in the input xml, so I can not use the 'select='.
 For example, I need to generate this code regardless of the input xml:

 <item>
    <type>type1</type>
    <value>val1</value>
 </item>
 <item>
    <type>type2</type>
    <value>val2</value>
 </item>
 <item>
    <type>type3</type>
    <value>val3</value>
 </item>


 Of course I can use this directly in my xsl file, but there's more item.
 So the code is too long. And there are more tags for the item.

If 2.0 you can do:

<xsl:for-each select="1 to 3">
  <item>
    <type>type<xsl:value-of select="."/>
     ...


In 1.0 you really need a recursive template:

<xsl:call-template name="generate">
  <xsl:with-param name="count" select="3"/>
</

<xsl:template name="generate">
  <xsl:param name="count"/>
  <xsl:if test="$count > 0">
    <item>
      <type>type<xsl:value-of select="$count"/>
      </
    </
    <xsl:call-template name="generate">
      <xsl:with-param name="count" select="$count - 1"/>
    </
  </xsl:if>
</xsl:template>


cheers
-- 
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

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