El Blog de Óscar Sotorrío Sánchez - MCP Application Development Foundation - C#

Todo lo que vaya aprendiendo de .NET, C#, ASP.NET, SQL Server, etc, lo compartiré con vosotros.

El autor:

Óscar Sotorrío Sánchez
Contacto Send mail

Encuéntralo

Álguien dijo...


No todo lo que cuenta puede ser contado y no todo lo que puede ser contado cuenta.

Albert Einstein

Paginación con XSLT y XML

El motivo de este post es crear una forma de paginar el contenido de un archivo XML formateando los datos por medio de la tecnología XSLT.

En principio la idea es bien sencilla. Supongamos un archivo XML como el siguiente:

 

<?xml version="1.0" encoding="utf-8" ?>
<empleados>  
	<empleado id="1" nombre="Pedro" salario="45234€" />  
	<empleado id="2" nombre="Carlos" salario="45234€" />  
	<empleado id="3" nombre="Juan" salario="65362€" />  
	<empleado id="4" nombre="Antonio" salario="13134€" />  
	<empleado id="5" nombre="Manolo" salario="623462€" />  
	<empleado id="6" nombre="Aitor" salario="45234€" />
</empleados>
 

Lo que pretendemos es mostrar los elementos empleado del XML paginados de 2 en 2. En este caso tendremos un total de 3 páginas.

Podemos modificar el XML para que contenga un nodo raiz en el que guardaremos como atributos los datos necesarios para la páginación. Nuestro XML quedaría así:

 

<?xml version="1.0" encoding="utf-8" ?>
<pag posicionInicial="1" elementosPagina="2">
<empleados>  
	<empleado id="1" nombre="Pedro" salario="45234€" />  
	<empleado id="2" nombre="Carlos" salario="45234€" />  
	<empleado id="3" nombre="Juan" salario="65362€" />  
	<empleado id="4" nombre="Antonio" salario="13134€" />  
	<empleado id="5" nombre="Manolo" salario="623462€" />  
	<empleado id="6" nombre="Aitor" salario="45234€" />
</empleados>
</pag>
 

Lo mejor de esta técnica es que podemos añadir y modificar los atributos del nodo <pag> por medio de JavaScript mejorando la experiencia del usuario. Podemos cargar el XML entero en memoria y modificar los atributos ahorrando de este modo viajes innecesarios al servidor.

Ahora solo tendremos que recoger los valores de los atributos posicionInicial y elementosPagina en el código XSLT a modo de variables, tal y como se indica a continuación.

<xsl:variable name="start" select="pag/@posicionInicial" />
<
xsl:variable name="limint" select="pag/@elementosPagina" />
<
xsl:variable name="end" select="$start + $limint - 1" />
<
xsl:foreach select="pag/empleados/empleado[position() >= $start and position() <= $end]">          <xsl:sort select="@id" order="descending"/>

Aquí pondríamos todo el código HTML que fuera necesario.
</xsl:for-each>

 

Después de esto, por medio del evento onClick de una imagen o botón, tanto para avanzar como retroceder, llamaremos a una función JavaScript que se encarge en cada caso de aumentar (++) o disminuir (--) en 1 el valor del atributo XML posicionInicial.


Tags:
Categories: XML
Posted by Oscar.SS on sábado, 25 de julio de 2009 23:00
Permalink | Comentarios (0) | Post RSSRSS comment feed