Foros del Web » Creando para Internet » CSS »

Problema con XSL

Estas en el tema de Problema con XSL en el foro de CSS en Foros del Web. Buenas estoy comenzando con los XML DTD y XSL y tengo un xml de este tipo: <document> <tienda id="1"> <col id="nombre">nombre de la tienda</col> <col ...
  #1 (permalink)  
Antiguo 12/03/2013, 18:27
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 11 años, 1 mes
Puntos: 0
Exclamación Problema con XSL

Buenas estoy comenzando con los XML DTD y XSL y tengo un xml de este tipo:
<document>
<tienda id="1">
<col id="nombre">nombre de la tienda</col>
<col id="total">7</col>
<col id="perros">4</col>
<col id="gatos">3</col>
</tienda>
</document>

a ese xml le asocio este xsl

<?xml version="1.0" encoding="UTF-8"?><!-- DWXMLSource="tienda.xml" --><!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp "*">
]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-1" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:template match="/">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title></title>
</head>

<body>
<H1 align="center">Tienda</H1>
</body>

<table width="900" border="1" cellspacing="0">
<tr>
<td>Nombre</td>
<td>Total</td>
<td>Perros</td>
<td>Gatos</td>
</tr>
<xsl:for-each select="document/tienda">
<tr>
<td>&nbsp;<xsl:variable name="id" select="'nombre'"/></td>
<td>&nbsp;<xsl:variable name="id" select="'total'"/></td>
<td>&nbsp;<xsl:variable name="id" select="'perros'"/></td>
<td>&nbsp;<xsl:variable name="id" select="'gatos'"/></td>
</tr>
</xsl:for-each>
</table>

</html>

</xsl:template>
</xsl:stylesheet>

El caso es que al asociarle ese xsl lo abro con el mozilla y se me muestra una tabla y me aparecen las columnas Nombre, Total, Perros, Gatos pero las filas de las columnas me aparecen en blanco alguien sabe decirme que debo modificar porque ya e modificado todo lo que creía y no hay forma y me estoy volviendo loco. Un saludo y gracias
  #2 (permalink)  
Antiguo 12/03/2013, 18:49
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con XSL

Hola:

La forma de definir las variables no sé si es correcta, pero lo que creo incorrecto es repetir el nombre de las variables (id)...

... y con xsl:variable solo las defines, pero no las usas...

Una idea:


Cita:
<xsl:variable name="itemTitulo">
<xsl:value-of select="titulo"/>
</xsl:variable>
<xsl:variable name="itemUrl">
<xsl:value-of select="url"/>
</xsl:variable>
<a class="enlace" href="{$itemUrl}">
<xsl:value-of select="titulo"/>
</a>
Son líneas que funcionan correctamente... espero que puedan orientarte.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 12/03/2013, 19:06
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problema con XSL

te refieres a ponerlo de la siguiente forma ?? esque soy nuevo con estoy y estoy perdidisimo asi que si pudieras explicarmelo un poco mas detallado te lo agradeceria mucho ya que necesito solucionarlo para el jueves, se hacerlo si fuera del tipo <nombre></nombre> de hecho tengo el mismo ejercicio hecho asi pero con el maldito <col-id="nombre></col> me estoy volviendo loko


<tr>
<td>&nbsp;<xsl:variable name="itemNombre"/></td>
<td>&nbsp;<xsl:value-of select="nombre"/></td>
<td>&nbsp;<xsl:variable name="itemTotal"/></td>
<td>&nbsp;<xsl:value-of select="total"/></td>
<td>&nbsp;<xsl:variable name="itemPerros"/></td>
<td>&nbsp;<xsl:value-of select="perros"/></td>
<td>&nbsp;<xsl:variable name="itemGatos"/></td>
<td>&nbsp;<xsl:value-of select="gatos"/></td>
</tr>

Última edición por squinsquan; 12/03/2013 a las 19:25
  #4 (permalink)  
Antiguo 12/03/2013, 19:26
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con XSL

Hola:

A las variables debes darle un valor... o sea que no debes cerrar la etiqueta sin haberselo dado...

Si ese valor es el contenido de una etiqueta debes usar xsl:value-of-select, y si fuese un atributo debes anteponer un carácter "@"...

En principio creo que deberías retocar tu xml o tu bucle for-each...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 12/03/2013, 19:31
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problema con XSL

te agradecería mucho si pudieras ponerme un ejemplo con el xsl que pusesobre como deberia kedar una de las variables y el xml no puedo retocarlo pues el ejercicio tengo que hacerlo con ese aunque desconozco si es posible hacerlo con ese xml
  #6 (permalink)  
Antiguo 12/03/2013, 19:43
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con XSL

Hola:

Cuando creas una variable, no deberías poner más que el resultado, así que en las declaraciones debes evitar usar otras etiquetas (</td><td>)...

Ta paso una página donde explico algo sobre su uso: Este diario: sitemap.xsl

Acuérdate de lo que puse antes sobre atributos...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #7 (permalink)  
Antiguo 12/03/2013, 20:17
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problema con XSL

estoy tratando de hacerlo como me dices y no ha manera no se como hacerlo ya
  #8 (permalink)  
Antiguo 13/03/2013, 03:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con XSL

Hola:

Si quieres poner en el futuro más tiendas (ya que solo aparece una en el ejemplo),
luego del xsl:for-each que tienes, deberías hacer otro bucle con los elementos col...

Cita:
<dl>
<xsl:for-each select="document/tienda">
<dt>Tienda: <xsl:value-of select="@id"/></dt>
<xsl:for-each select="col">
<xsl:variable name="indice">
<xsl:value-of select="position()" />
</xsl:variable>
<xsl:variable name="valor">
<xsl:value-of select="@id" />
</xsl:variable>

<dd>sitio: <xsl:value-of select="$indice"/></dd>
<dd>id: <xsl:value-of select="$valor"/></dd>
<dd>contenido: <xsl:value-of select="."/></dd>
</xsl:for-each>
</xsl:for-each>
</dl>
Deberías evitar poner un número en el atributo id (debe empezar por una letra)

Si quieres un atributo se antepone "@", y los contenidos son <xsl:value-of select="." />

También puedes definir variables como el ejemplo...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 13/03/2013 a las 03:17 Razón: paréntesis sin cerrar

Etiquetas: html, tabla, xsl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:44.