чтож представлю свой вариант решения этой задачи...
на входе:
PHP код:

<pages sel="2" mess="2">
<item/>
<item/>
<item/>
<item/>
<item/>
<item/>
<item/>
<item/>
<item/>
</pages>
шаблон:
PHP код:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:call-template name="nav"/>
</xsl:template>
<xsl:template name="nav">
<xsl:apply-templates select="//pages" mode="nav"/>
</xsl:template>
<xsl:template match="pages" mode="nav">
<xsl:variable name="start" select="@sel - @mess"/>
<xsl:variable name="end" select="@sel + @mess"/>
<xsl:variable name="prev" select="@sel - 1"/>
<xsl:variable name="next" select="@sel + 1"/>
<xsl:variable name="all" select="count(item)"/>
<table border="1">
<tbody>
<tr>
<td>
<xsl:value-of select="concat(@sel, ' of ', $all)"/>
</td>
<xsl:if test="@sel != 1">
<xsl:apply-templates select="item[1]" mode="nav_f" />
<xsl:apply-templates select="item[$prev]" mode="nav_p" />
</xsl:if>
<xsl:apply-templates select="item[position() >= $start and position() <= $end]" mode="nav" />
<xsl:if test="$end < $all">
<xsl:apply-templates select="item[$next]" mode="nav_n" />
<xsl:apply-templates select="item[$all]" mode="nav_l" />
</xsl:if>
</tr>
</tbody>
</table>
</xsl:template>
<xsl:template match="item" mode="nav">
<td>
<xsl:value-of select="position()"/>
</td>
</xsl:template>
<xsl:template match="item" mode="nav_f">
<td>
<xsl:text>f</xsl:text>
</td>
</xsl:template>
<xsl:template match="item" mode="nav_l">
<td>
<xsl:text>last</xsl:text>
</td>
</xsl:template>
<xsl:template match="item" mode="nav_p">
<td>
<xsl:text><</xsl:text>
</td>
</xsl:template>
<xsl:template match="item" mode="nav_n">
<td>
<xsl:text>></xsl:text>
</td>
</xsl:template>
</xsl:stylesheet>
benya
вы бы хоть предупредели что ваш шаблон использует XSL2.0
<xsl:variable name="item" select="item[position() = $sel]"/> - этого в XSL1.0 вроде как нету... там переменные только текстовые...
benya
я наложил структирирование на ваш пример и пофиксил пару багов(очевидных) в шаблоне.