XSL - Como saber el valor mas bajo desde xsl

 
Vista:

Como saber el valor mas bajo desde xsl

Publicado por Bendel (1 intervención) el 27/04/2005 01:18:06
Saludos a todos!, tengo un par de dos preguntas que no logro responder por mi mismo, estoy trabajando en un xsl que muestra en una tabla el titulo del libro, año precio etc.. y necesito saber como saber por ejemplo el menor precio de todo el archivo xml
Ejemplo
<Biblioteca>
<Libro1>
<Titulo> El serrucho </Titulo>
<precio> 50 </precio>
<Libro2>
<Titulo>.......

La pregunta es... Hay alguna manera de obtener en una variable mismamente el precio mas bajo? no lo necesito para ordenarlo por precio para que os hagais una idea quiero mostrar una linea que diga \"En este catalogo el producto mas barato es de \"XX\" euros\"

Luego 2 cositas mas.. en primer lugar tengo una serie de datos (tiempos) en este formato \"1.34:445\" , se os ocurre alguna manera de trabajar con ellos? y en segundo algo parecido, tengo otros datos (de tiempo tambien) en formato segundos punto milesimas osea \"98.555\" y me gustaria pasarlos a minutos.segundos.milesimas, alguna idea tambien?

Muchas Gracias!
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

Obtener el precio más bajo y formatear datos de tiempo en XML

Publicado por Alejandro (227 intervenciones) el 05/07/2023 00:24:40
Para obtener el precio más bajo de todo el archivo XML en XSL, puedes utilizar la función de XPath "min()". Aquí tienes un ejemplo de cómo hacerlo:

1
<xsl:variable name="precioMasBajo" select="min(//precio)" />

Luego, puedes utilizar esta variable en tu salida para mostrar el mensaje deseado:

1
En este catálogo, el producto más barato es de <xsl:value-of select="$precioMasBajo" /> euros.

Para trabajar con los datos de tiempo en formato "1.34:445", puedes utilizar las funciones y operadores de XPath para extraer y manipular los componentes del tiempo. Aquí hay un ejemplo para extraer los minutos y segundos:

1
2
3
<xsl:variable name="tiempo" select="1.34:445" />
<xsl:variable name="minutos" select="floor($tiempo div 60)" />
<xsl:variable name="segundos" select="$tiempo mod 60" />

Luego, puedes utilizar estas variables en tu salida para mostrar el tiempo en el formato deseado:

1
Tiempo: <xsl:value-of select="$minutos" />.<xsl:value-of select="$segundos" />

Para formatear los datos de tiempo en formato "98.555" a minutos.segundos.milésimas, puedes seguir un enfoque similar. Aquí hay un ejemplo:

1
2
3
4
<xsl:variable name="tiempo" select="98.555" />
<xsl:variable name="minutos" select="floor($tiempo div 60)" />
<xsl:variable name="segundos" select="floor($tiempo mod 60)" />
<xsl:variable name="milesimas" select="round(($tiempo - floor($tiempo)) * 1000)" />

Luego, puedes utilizar estas variables en tu salida para mostrar el tiempo en el formato deseado:

1
Tiempo: <xsl:value-of select="$minutos" />.<xsl:value-of select="$segundos" />.<xsl:value-of select="$milesimas" />

Espero que esto te ayude con tus consultas.
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