XSL - Problema con el xsl:sort

 
Vista:

Problema con el xsl:sort

Publicado por Julio (2 intervenciones) el 21/05/2007 02:09:00
El problema que tengo es el siguiente:
Tengo una columna en un xml que es de tipo numerico, la misma tiene como separador decimal la ',' el problema es que no consigo que el xsl:sort ordene correctamente por esta columna. Si lo hace en el caso de que el separador decimal sea el '.'.

Julio
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

RE:Problema con el xsl:sort

Publicado por Mukuykak (8 intervenciones) el 23/05/2007 06:39:30
Saludos, Julio:

Ya te envié el ejemplo a tu mail, pero lo pongo aquí para que esté a la disposición
de todos.

Aquí pongo un xml de ejemplo con su xsl:

Copiar, pegar y guardar como acomoda.xml

----------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="acomoda.xsl"?>
<acomoda>

<numer>
<num>1,8</num>
<num>5,9</num>
<num>9,4</num>
<num>4,4</num>
<num>8,3</num>
<num>3,0</num>
</numer>

</acomoda>

----------------------------------------------------------------------------------------------------------------

Ahora, te dejo el archivo xsl.

Copiar, pegar y guardar como acomoda.xsl

---------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="bianco">color : #ffffff</xsl:variable>
<xsl:template match="acomoda">
<html>
<head><title>cualquier cosa</title></head>
<body bgcolor="#bb1115">
<table border="4" bordercolor="yellow" cellspacing="5" cellpadding="5">
<tr>
<td bgcolor="green">
<xsl:apply-templates select="numer/num">
<xsl:sort select="string()" data-type="text" order="ascending" />
</xsl:apply-templates>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="numer/num">
<xsl:for-each select=".">
<font style="{$bianco}"><xsl:value-of select="." /></font>
<br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

----------------------------------------------------------------------------------------------------------------
Resumiendo: en vez de usar "number" en el xsl:sort, debiste usar "string()" y "text".

Buen día =0)
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

RE:Problema con el xsl:sort

Publicado por Julio (2 intervenciones) el 23/05/2007 13:44:26
Gracias por la respuesta! encontre otra forma de hacerlo:

<xsl:apply-templates select="numer">
<xsl:sort select="translate(num,',','.')" data-type="number"
order="ascending" />
</xsl:apply-templates>

Lo que me mandaste no lo pude probar.
Gracias.

Julio
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