RE: [xsl] RE: xsl for

Subject: RE: [xsl] RE: xsl for
From: cknell@xxxxxxxxxx
Date: Fri, 07 Apr 2006 11:30:38 -0400
Given exactly what you state is your input (I suspect it's more complicated), this stylesheet will give the output you asked for using recursive calls to a named template.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:output method="xml" indent="yes" />
  <xsl:strip-space elements="*" />

  <xsl:template match="/">
    <xsl:call-template name="pageBrowser">
      <xsl:with-param name="maxpage" select="14" />
    </xsl:call-template>
  </xsl:template>

<xsl:template name="pageBrowser">
    <xsl:param name="maxpage" />
    <xsl:param name="start" select="5" />
    <xsl:variable name="factor" select="/pageBrowser/@pageSize" />
    <xsl:variable name="skipcount" select="$start * $factor" />
    <xsl:if test="$start le $maxpage">
      <a href="toto.htm?skip={$skipcount}"><xsl:value-of select="$start" /></a>
      <xsl:call-template name="pageBrowser">
      <xsl:with-param name="maxpage" select="$maxpage" />
      <xsl:with-param name="start" select="$start + 1" />
    </xsl:call-template>
    </xsl:if>
    
  </xsl:template>

</xsl:stylesheet>
-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Philippe LAPLANCHE <philippe.laplanche@xxxxxxxxxxxx>
Sent:     Fri, 7 Apr 2006 16:54:40 +0200
To:       <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Subject:  [xsl] RE: xsl for

Sorry I sent the mail before I finished writing it.

This may appear silly but I don't know how to do this in a clean way
with xsl ...

My input is 

<pageBrowser startPage="5" pageSize="10"/>

And I want this output :

<a href="toto.htm?skip=50">5</a>
<a href="toto.htm?skip=60">6</a>
<a href="toto.htm?skip=70">7</a>
<a href="toto.htm?skip=80">8</a>
<a href="toto.htm?skip=90">9</a>
<a href="toto.htm?skip=100">10</a>
<a href="toto.htm?skip=110">11</a>
<a href="toto.htm?skip=120">12</a>
<a href="toto.htm?skip=130">13</a>
<a href="toto.htm?skip=140">14</a>

I mean I want to use a loop somewhere and I don't want to have 

<xsl:template match="pageBrower">
	<a href="toto.htm?skip={@startPage*@pageSize}"><xsl:value-of
select="@startPage"/></a>
	<a href="toto.htm?skip={(@startPage+1)*@pageSize}"><xsl:value-of
select="@startPage+1"/></a>
	<a href="toto.htm?skip={(@startPage+2)*@pageSize}"><xsl:value-of
select="@startPage+2"/></a>
	<a href="toto.htm?skip={(@startPage+3)*@pageSize}"><xsl:value-of
select="@startPage+3"/></a>
	...
</xsl:template>

Thanks in advance

Philippe

Current Thread