Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/05/2005, 09:10
Avatar de Harijan
Harijan
 
Fecha de Ingreso: mayo-2005
Mensajes: 6
Antigüedad: 19 años
Puntos: 0
Menu en XML

Hola Ferran, siento no haberme explicado bien, pero la verdad es que esto es un poco lioso.

Puesto que decías que el menú te servía, lo que yo trataba es de que vieras como se hace un enlace.

Vamos a intentarlo con un ejemplo más sencillo. Para ello usaremos el siguiente archivo:

Menú.xml


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Menu.xsl"?>
<Menu label="MENU DE OPCIONES">
<Item label="1. Opcion 1" value="pagina_1.htm#1.1"/>
<Item label="2. Opcion 2" value="pagina_1.htm#1.2"/>
<Item label="3. Opcion 3" value="pagina_1.htm#1.3"/>
<Item label="4. Opcion 4" value="pagina_1.htm#1.4"/>
<Item label="5. Opcion 5" value="pagina_2.htm#2.1"/>
</Menu>


Como puedes ver, es una tabla con 5 'filas', llamadas Item, cada una de ellas con dos atributos: label que es lo que queremos que se vea en el menu y value que es la página donde queremos saltar. Seguiremos utilizando los archivos pagina_1.htm y pagina_2.htm, de forma que las opciones 1 a 4 nos llevarán a pagina_1.htm, y dentro de ella a sus respectivos marcadores. La opción 5 nos llevará a pagina_2.htm, al único marcador que hay (podríamos no haberlo puesto).
Para poder ver este archivo en el navegador, debemos indicarle a éste de qué forma debe tratarlo. Para ello usamos una hoja de estilos (.xsl). Fíjate en la segunda línea del fichero:

<?xml-stylesheet type="text/xsl" href="Menu.xsl"?>

Le indica al navegador que utilice la hoja de estilo (stylesheet), de tipo "text/xsl" y que se llama "Menu.xsl". Por tanto, antes de ejecutar el fichero deberemos crear la hoja de estilo.

Menu.xsl


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head/>
<body>
<xsl:for-each select="Menu">
<xsl:for-each select="@label">
<xsl:value-of select="."/>
</xsl:for-each>
<br/>
<br/>
<xsl:for-each select="Item">
<xsl:for-each select="@label">
<pre>
<a>
<xsl:attribute name="href"><xsl:value-of select=../@value/></xsl:attribute>
<xsl:value-of select="."/>
</a>
</pre>
</xsl:for-each>
</xsl:for-each>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


Las dos primeras líneas del fichero son la cabecera. La tercera línea busca la raíz del árbol '/', a partir de ahí aparecen una serie de instrucciones xsl:for-each (para cada...) que van recorriendo el árbol de arriba hacia abajo.

Para cada entrada 'Menu' selecciona su etiqueta y la muestra tal cual (solo hay una). A continuación desciende un nivel y para cada 'Item' selecciona su etiqueta, la muestra, y crea un enlace al valor (value) que le hemos asignado a la misma. Es el fragmento de código que va entre <a> y </a>.

Una vez creados y mostrados los enlaces, el resto de las instrucciones son para cerrar los bucles y las secciones.

Bien, una vez que tengamos los dos archivos creados sólo hay que abrir el archivo menu.xml con el navegador y comprobar el resultado.

En el primer mensaje decías que necesitabas varias subdivisiones y aquí solo hay una. La forma de crearlas es básicamente la misma, pero con algunos bucles for-each más. En el fichero catalogo.xsl tienes un ejemplo.

Espero haberme explicado mejor, no obstante si necesitas alguna aclaración no dudes en pedirla.

Un saludo.