Hello David...
I had a go at implimenting your solution but could'nt "bolt it in". I
had worked out my style sheet to grab a set of nodes and test the
amount of images so as to display links that would determine the next
or previous set of images. I understand the logic behind your solution
regarding the following siblings etc.
Here is my style sheet if you'd like a glance:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:atg="http://atg.uwe.ac.uk/portal/photosPortlet" version="1.0">
<xsl:param name="user_name">****</xsl:param>
<xsl:param name="faculty">****</xsl:param>
<xsl:param name="action_url">action not set</xsl:param>
<xsl:param name="photo_server">not found</xsl:param>
<xsl:param name="page_number">0</xsl:param>
<xsl:param name="group_name">Not been set yet...</xsl:param>
<xsl:param name="startingPhoto">1</xsl:param>
<xsl:param name="howMany">10</xsl:param>
<xsl:template match="/">
<head>
<link type="text/css" rel="stylesheet"
href="css/myuwe.css"/>
</head>
<table>
<tr>
<td colspan="2"><h1>Photos Portlet</h1></td>
</tr>
<tr>
<td>Name: <xsl:value-of
select="$user_name"/><br/>Your Faculty:
<xsl:value-of select="$faculty"/></td>
<td valign="top"
align="right"><xsl:apply-templates
select="/atg:PhotosData/groups"/></td>
</tr>
<tr>
<td colspan="2"><xsl:call-template
name="photos">
<xsl:with-param name="recordsInGroup"
select="//atg:record[../@groupName=$group_name]" />
</xsl:call-template></td>
</tr>
</table>
</xsl:template>
<xsl:template match="atg:groups">
<form method="post" action="{$action_url}">
<select name="selected-group">
<xsl:apply-templates select="atg:group"/>
</select>
<input type="submit" value="select group"/>
</form>
</xsl:template>
<xsl:template match="atg:group">
<xsl:variable name="groupName">
<xsl:value-of select="."/>
</xsl:variable>
<option value="{$groupName}">
<xsl:value-of select="$groupName"/>
</option>
</xsl:template>
<xsl:template name="photos">
<xsl:param name="recordsInGroup"/>
<xsl:variable name="count" select="count(record)"/>
<xsl:variable name="previous" select="number($startingPhoto -
$howMany)"/>
<xsl:variable name="next" select="number($startingPhoto + $howMany)"/>
<table cellpadding="5" border="1" align="left">
<!-- group_name should be set only if photos are
available -->
<tr>
<td>
<h3>Photos for <em><xsl:value-of
select="$group_name"/></em></h3>
</td>
</tr>
<!-- page number code removed and stored at the bottom
of this stylesheet -->
<tr>
<td>
<xsl:call-template name="displayPhotos">
<xsl:with-param name="currentNodes"
select="$recordsInGroup[position() >= $startingPhoto and position()
<($startingPhoto + $howMany)]"/>
</xsl:call-template>
</td>
</tr>
<tr>
<td>
<xsl:choose>
<xsl:when test="$startingPhoto
= 1">
<xsl:text> None </xsl:text>
</xsl:when>
<xsl:otherwise>
<a
href="{$action_url}?startingPhoto={$previous}"> Previous
<xsl:value-of select="$howMany"/></a>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="($startingPhoto
+ $howMany) >= $count">
<xsl:text> None </xsl:text>
</xsl:when>
<xsl:otherwise>
<a
href="{$action_url}?startingPhoto={$next}">Next
<xsl:value-of select="$howMany"/></a>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</table>
</xsl:template>
<xsl:template name="displayPhotos">
<xsl:param name="currentNodes"/>
<xsl:for-each select="$currentNodes">
<img src="{$photo_server}/?studentId={id}"/><br /> Name:
<xsl:value-of select="atg:name"/>
<xsl:if test="position() mod 5 =0"><br/></xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
--~------------------------------------------------------------------
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>
--~--