Ordenar con <xsl:sort> y luego copiar con <xsl:copy> en XSL

Rokkuman
03 de Marzo del 2004
A las buenas,

Una vez más me he quedado atascado en el trabajo; esta vez usando las etiquetas <order> y <copy>.

Estoy intentando ordenar un nodo para luego copiar los datos de ese nodo y crear un visualizador en donde me mostrará el primero una vez ya ordenados y al clickear en el botón que me muestre el segundo y así sucesivamente.

Estaba probando con este código, pero no lo he conseguido hacer funcionar:

<xsl:sort select="nombre" order="ascending"/>

<xsl:template match="nombreorden">
<xsl:copy>
<xsl:for-each select="nombre">
</xsl:copy>
</xsl:template>

Y luego mostrar ese primer valor:

<xsl:value-of select="nombreorden[position()=1]/>

Pero me da error y no consigo hacerlo funcionar. Algún consejo? Muchas gracias de antemano.

Rokkuman
03 de Marzo del 2004
Si sirve de algo voy a copiar el código con el que estoy trabajando en XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:key name="year" match="desarrollos_x0020_Medida" use="anno"/>
<xsl:key name="client" match="desarrollos_x0020_Medida" use="clientes_nombre"/>
<xsl:variable name="identificador" select="'1'" />
<xsl:template match="/">
<head>
<title>Medida</title>
</head>
<link href="medida.css" rel="stylesheet" type="text/css"/>
<body bgcolor="#FFFFFF" text="#000000">
<table width="500" border="0">
<tr>
<td>
<h3>TIPO PROYECTO</h3>
</td>
</tr>
</table>
<xsl:for-each select="//desarrollos_x0020_Medida[generate-id(.)=generate-id(key('year',anno))]">
<xsl:sort select="anno" order="descending"/>
<table width="500" border="0">
<tr>
<td>
<h3><xsl:value-of select="anno"/></h3>
</td>
</tr>
</table>
<table width="500" border="0">
<xsl:for-each select="key('year',anno)[generate-id(.)=generate-id(key('client',clientes_nombre))]">
<xsl:sort select="clientes_nombre" order="ascending"/>
<tr>
<td class="client"><xsl:value-of select="clientes_nombre"/></td>
</tr>
<xsl:for-each select="key('client',clientes_nombre)">
<tr>
<td class="image">
<img>
<xsl:attribute name="src">
<xsl:value-of select="urlfoto"/>
</xsl:attribute>
</img>
</td>
</tr>
<tr>
<td class="link">
<a target="_blank">
<xsl:attribute name="href">
<xsl:value-of select="url"/>
</xsl:attribute>
<xsl:value-of select="url"/>
</a>
</td>
</tr>
<tr>
<td class="description"><xsl:value-of select="desarrollos.descripcion"/></td>
</tr>
</xsl:for-each>
</xsl:for-each>
</table>
</xsl:for-each>
</body>
</xsl:template>
</xsl:stylesheet>

Lo que quiero haces es que una vez que me haya generado la id para clientes_nombre pueda coger todos los clientes, meterlos en una variable, y mostrar una variable por página, para así hacer un pasador de datos en el que con una barra pueda moverme adelante o atrás.

Había pensado en lo de <xsl:copy> pero no consigo hacerlo funcionar.