XML - xsl super basico

 
Vista:

xsl super basico

Publicado por josem (1 intervención) el 12/11/2005 03:53:54
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 ...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Error de sintaxis al sumar valores en una transformación XSL

Publicado por Alejandro (258 intervenciones) el 12/07/2023 17:08:58
El error que estás experimentando en la transformación XSL se debe a un problema de sintaxis en la expresión XPath dentro del archivo XSL. La sintaxis correcta para realizar la suma en XPath es utilizando la función `sum()` en lugar del operador `+`.

Aquí tienes la corrección en tu archivo di.xsl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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"/>
        </PRE>
      </BODY>
    </HTML>
  </xsl:template>
 
  <xsl:template match="precio">
    <xsl:variable name="precioSumado" select=". + 100"/>
    <xsl:value-of select="$precioSumado"/>
  </xsl:template>
 
</xsl:stylesheet>

En esta corrección, se utiliza el elemento `xsl:template` para hacer coincidir el elemento `<precio>` en el archivo XML y se crea una variable `$precioSumado` para almacenar el resultado de la suma. Luego, se utiliza el elemento `xsl:value-of` para imprimir el valor sumado en la salida.

Con esta corrección, la transformación XSL debería ejecutarse sin problemas y mostrar el precio sumado en la salida.

Recuerda asegurarte de que la ruta del archivo di.xsl sea correcta y esté accesible desde el archivo XML.

Espero que esta solución resuelva el error de sintaxis y te permita realizar la transformación XSL correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar