Helpful Information
 
 
Category: XML
display records in certain number of rows.

i need to use xsl to display the xml output in certain number of rows. for example, i have 30 rows and i want to display 10 rows in each page. the param "start" is a default value, and thus it does not change from 1 ("start") to 11 when it reaches to the 11th record.

this is the code:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">


<xsl:output method="html" />
<xsl:param name="start">1</xsl:param>
<xsl:param name="perpage">10</xsl:param>

<xsl:variable name="totalitems" select="count(//student)"/>
<xsl:variable name="end">
<xsl:choose>
<xsl:when test="($start + $perpage) > $totalitems">
<xsl:value-of select="$totalitems"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$start + $perpage - 1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>

<!-- begin root template -->

<xsl:template match="/">



<h3>Showing records <xsl:value-of select="$start"/>- <xsl:value-of
select="$end"/> of
<xsl:value-of select="$totalitems"/></h3>

<table border="0" cellpadding="0" cellspacing="0">
<tr><th>Product ID</th><th>Description</th><th>Price</th></tr>
<xsl:for-each select="school/student[position() >= $start and
position() <= $end]">
<tr>
<td><xsl:value-of select="name"/></td>
</tr>
</xsl:for-each>
</table>

<!-- if there are records before the block we are viewing, provide a
'prev.' link -->
<xsl:if test="$start > 1">
<a href="school.xml?start={$start - $perpage};perpage={$perpage}">prev.</a>
</xsl:if>

<!-- process *all* the <item> elements in the document to build the
'google-style' navbar -->
<xsl:apply-templates select="student"/>

<!-- if there are more records, provide a 'next' link -->
<xsl:if test="$totalitems > $end">
<a href="school.xml?start2={$end + 1};perpage={$perpage}" name="siao">next</a>
</xsl:if>


</xsl:template>

<!-- end root template -->

<!-- the 'item' template that builds the numbered navbar links -->
<xsl:template match="student">
<xsl:if test="position() mod $perpage = 1 or $perpage = 1">
<xsl:variable name="pagenum">
<xsl:value-of select="ceiling(position() div $perpage)"/>
</xsl:variable>
<a href="school.xml?start={position()};perpage={$perpage}">
<xsl:value-of select="$pagenum"/>
<!-- force whitespace in between the numbered links -->
<xsl:text> </xsl:text>
</a>
</xsl:if>
</xsl:template>

</xsl:stylesheet>

pls help asap...
Note: is it possible to do a counter or something.

Edited to remove the excessive smlileys from your code (where you didn't intend for them to be of course) :) .










privacy (GDPR)