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

Agrupar según condición if

Estas en el tema de Agrupar según condición if en el foro de Programación General en Foros del Web. Tengo el siguiente fichero xml : <?xml version="1.0" encoding="UTF-8" ?> <A> <Valor Nombre="A" Variacion=2/> <Valor Nombre="B" Variacion=3 /> <Valor Nombre="C" Variacion=0.5 /> </A> me gustaría ...
  #1 (permalink)  
Antiguo 10/11/2010, 05:27
Avatar de subsoho  
Fecha de Ingreso: octubre-2009
Mensajes: 34
Antigüedad: 14 años, 5 meses
Puntos: 0
Agrupar según condición if

Tengo el siguiente fichero xml :

<?xml version="1.0" encoding="UTF-8" ?>
<A>
<Valor Nombre="A" Variacion=2/>
<Valor Nombre="B" Variacion=3 />
<Valor Nombre="C" Variacion=0.5 />
</A>

me gustaría agruparlos según una condición if, por ejemplo los que son mayores que 1, el resultado esperado es este :

<?xml version="1.0" encoding="UTF-8" ?>
<A>
<MayorQueUno>
<Valor Nombre="A" Variacion=2/>
<Valor Nombre="B" Variacion=3 />
</MayorQueUno>
<MenorQueUno>
<Valor Nombre="C" Variacion=0.5 />
</MenorQueUno>
</A>

Llevo rato intentándolo y no hay manera.

Ayuda necesito. Gracias.
  #2 (permalink)  
Antiguo 10/11/2010, 06:39
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 1 mes
Puntos: 90
Respuesta: Agrupar según condición if

Sería algo así

Código:
<xsl:for-each select="/Valor/[@Variacion &gt; 1]">
   <xsl:value-of select="/Valor/@Nombre" />
</xsl:for-each>
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 10/11/2010, 09:19
Avatar de subsoho  
Fecha de Ingreso: octubre-2009
Mensajes: 34
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Agrupar según condición if

Sí ya había pensado algo así pero el problema de esto es que si quieres hacer 2 grupos (p.e.) has de recorrer todo el xml 2 veces, uno para los registros mayores que 1 y otra vez para los menores iguales a 1 .

Para ficheros xml muy grandes habría problemas de rendimiento.

Me gustaría algo que pasara por el xml sólo una vez y colocara cada registro dentro de su grupo.

Otro problema más como lo harías si quisieras hacer tres grupos ?

Mayores que 1 :
<xsl:for-each select="/Valor/[@Variacion &gt; 1]">

Menores que 0 :
<xsl:for-each select="/Valor/[@Variacion &lt; 0]">

Entre 0 y 1 (?)
<xsl:for-each select="/Valor/[@Variacion &gt; 0]" and "/Valor/[@Variacion &lt; 1]">


Algo así ??? como se puden poner varias condiciones booleanas con un "and" ??

Última edición por subsoho; 10/11/2010 a las 12:37

Etiquetas: agrupar, condición, xml
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 09:59.