XSL - operadores en xpath

 
Vista:

operadores en xpath

Publicado por josem (1 intervención) el 13/11/2005 03:29:58
holaatodos!! 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>Resultados:
<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

Corregir error de sintaxis en la suma de valores en XML

Publicado por Alejandro (227 intervenciones) el 05/07/2023 17:02:10
¡Hola! El error que estás experimentando se debe a un problema de sintaxis en tu archivo XSL. La expresión `<xsl:apply-templates select="/dvd/precio + 100"/>` está causando el error porque no es una sintaxis válida en XSLT.

Para sumar 100 al precio, puedes utilizar el elemento `<xsl:value-of>` junto con la función `sum()` en lugar de `<xsl:apply-templates>`. Aquí tienes una versión corregida de tu archivo di.xsl:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:template match="dvd">
    <HTML>
      <BODY>
        Resultados:
        <PRE>
          <xsl:value-of select="sum(/dvd/precio) + 100"/>
        </PRE>
      </BODY>
    </HTML>
  </xsl:template>
 
</xsl:stylesheet>

En esta nueva versión, utilizamos la función `sum()` para obtener el valor del precio y luego le sumamos 100. El elemento `<xsl:value-of>` se utiliza para imprimir el resultado en la salida transformada.

Espero que esta solución te ayude a resolver el problema. ¡Buena suerte!
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