Foros del Web » Programación para mayores de 30 ;) » Programación General »

xsl super basico

Estas en el tema de xsl super basico en el foro de Programación General en Foros del Web. Tengo el siguiente archivo xml: ===================================== <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="di.xsl"?> <dvd> <precio moneda="peso">44</precio> </dvd> ===================================== y di.xsl es: ===================================== <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ...
  #1 (permalink)  
Antiguo 11/11/2005, 20:55
 
Fecha de Ingreso: julio-2003
Ubicación: Buenos Aires
Mensajes: 96
Antigüedad: 20 años, 9 meses
Puntos: 0
xsl super basico

Tengo el siguiente archivo xml:

=====================================
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="di.xsl"?>

<dvd>
<precio moneda="peso">44</precio>
</dvd>
=====================================

y di.xsl es:

=====================================
<?xml version="1.0"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="dvd">
<HTML><BODY><H1>Resultados:</H1>
<PRE>
<xsl:apply-templates select="/dvd/precio + 100"/>
</PRE>
</BODY></HTML>
</xsl:template>

</xsl:stylesheet>
=====================================

la idea es sumar el numero 100 al precio y cuando quiero realizar la transformacion –estoy usando xml writer- me dice:

Expected token 'EOF' found '+'. /dvd/precio -->+<-- 100


¿es un error en la sintaxis? Gracias por sus respuestas ...
  #2 (permalink)  
Antiguo 14/11/2005, 03:52
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola ojota,

He cogido tu ejemplo y montando este xsl:
Código PHP:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
 <html>
   <head> 
    <title>Resultados</title> 
   </head> 
   <body>
    <h1>Resultados:</h1>
    <xsl:value-of select="(dvd/precio + 100)"/>  
   </body>  
 </html>
</xsl:template> 
</xsl:stylesheet>
funciona todo sin problemas. Suma 100 al precio.

Un saludo
  #3 (permalink)  
Antiguo 23/11/2005, 21:03
 
Fecha de Ingreso: noviembre-2005
Mensajes: 9
Antigüedad: 18 años, 5 meses
Puntos: 0
funciona si, pero solo aparentemente. Al mostrar el valor donde lo haces con <xsl:value-of select="(dvd/precio + 100)"/> solo imprimirias el valor del primer dvd, donde pones eso deberias poner un apply templates y luego añadir una template para mostrar los precios de los dvd.
ej:
<?xml blablabla>
<?xml-stylesheet blablabla>
<xsl:template match="/">
...
<body>
<xsl:apply-templates select="//dvd"/>
</body>
...
</xsl:template>

<xsl:template match="dvd">
<p>
<xsl:value-of select="(precio + 100)"/>
<p>
</xsl:apply-templates>

</xsl:stylesheet>

poniendo //dvd como he hecho te imprimiria todos los dvd, independ de la jerarquia, eso ya a tu bola y a la de xpath, para el ej vale.
lo del error en <xsl:apply-templates select="/dvd/precio + 100"/> es debido a que las templates se aplican a partes del arbol y eso de /dvd/precio+100 no es ningun nodo, un nombre de un nodo no puede contener un "+" y por tanto no puede figurar en el select del apply-templates y de ahi el error, se esperaba un fin de cadena y se encontro el +
  #4 (permalink)  
Antiguo 24/11/2005, 03:19
 
Fecha de Ingreso: marzo-2004
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 0
ojota no habla en ningún momento de bucles, ni varios dvd, solo como sumar...

Una cosilla strutus, ¿has probado el xsl que posteas? lo digo porque creo que no muestra los datos como se desea:
Resultados:
144441555516666

un saludo
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 19:41.