XSLT agrega valores a través de múltiples elementos
Frecuentes
Visto 123 equipos
0
Estoy atascado con un problema simple en mi XML/XSLT
Realmente no puedo poner un nombre propio al problema y, por lo tanto, parece que no puedo encontrar ninguna solución.
XML:
<root>
<entry gid ="001">
<level_1>
<target_value>50</target_value>
</level_1>
</entry>
<entry gid ="001">
<level_1>
<target_value>30</target_value>
</level_1>
</entry>
<entry gid ="002">
<level_1>
<target_value>40</target_value>
</level_1>
</entry>
<entry gid ="002">
<level_1>
<target_value>20</target_value>
</level_1>
</entry>
</root>
XSL:
<xsl:for-each select="entry[@gid='001']">
<xsl:if test="level_1/target_value != ''">
<xsl:value-of select="sum(level_1/target_value)" />
</xsl:if>
</xsl:for-each>
Resultado: 5030
¡Cualquier ayuda sería muy apreciada!
1 Respuestas
1
Como has visto, tu transformación totaliza el único level_1/target_value
elemento y salidas que para cada entry[@gid='001']
elemento.
Ya que quieres un total a través todos <entry>
elementos con un gid
of 001
debe escribir eso en el conjunto de nodos que envía a sum()
.
El XSLT se ve así
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" />
<xsl:template match="/root">
<xsl:value-of select="sum(entry[@gid='001']/level_1/target_value)" />
</xsl:template>
</xsl:stylesheet>
salida
80
contestado el 22 de mayo de 12 a las 10:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas xml xslt or haz tu propia pregunta.
Sería de gran ayuda si dijera qué resultado desea y cómo derivarlo de su XML. Supongo que quieres resumir todo
/root/entry[@gid='001']/level_1/target_value
elementos, resultando en un valor de80
? - BorodinSí, Borodin, eso es exactamente lo que busco: Bittein