XML - URGENTE!!!

 
Vista:

URGENTE!!!

Publicado por Sergio (1 intervención) el 07/10/2003 22:08:05
Saludos, me gustaria que alguien me dijera un metodo o función que me permita formatear los numeros con XSLT de forma que se rellenen con espacios blancos los digitos a la izquierda que falten para completar un numero de 'n' digitos. Por ejemplo, si estoy tratando con numeros de 4 digitos y resulta que aparece un numero de dos digitos quiero que los dos digitos que faltan a la izquierda se rellenen con espacios, es decir si tnego el 25 que aparezca " 25". He probado con la funcion "format-number" pero solo he logrado que rellene los digitos con ceros y eso no me sirve. Ej. format-number($numero,'0000') que produce 0025. ¿Alguna idea? 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

Cómo formatear números con espacios en blanco en XSLT

Publicado por Alejandro (258 intervenciones) el 10/07/2023 16:48:33
Para formatear los números con espacios en blanco en lugar de ceros a la izquierda en XSLT, puedes utilizar la función `substring()` y `string-length()` junto con la función `concat()` para lograr el resultado deseado. A continuación te muestro un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
  <xsl:template match="numero">
    <xsl:variable name="numeroConEspacios">
      <xsl:call-template name="espacios">
        <xsl:with-param name="longitudTotal" select="4" />
        <xsl:with-param name="numero" select="." />
      </xsl:call-template>
    </xsl:variable>
 
    <xsl:value-of select="$numeroConEspacios" />
  </xsl:template>
 
  <xsl:template name="espacios">
    <xsl:param name="longitudTotal" />
    <xsl:param name="numero" />
 
    <xsl:variable name="espacios">
      <xsl:value-of select="'                    '" /> <!-- Espacios en blanco -->
    </xsl:variable>
 
    <xsl:variable name="longitudNumero" select="string-length($numero)" />
    <xsl:variable name="espaciosFaltantes" select="$longitudTotal - $longitudNumero" />
 
    <xsl:value-of select="concat(substring($espacios, 1, $espaciosFaltantes), $numero)" />
  </xsl:template>
 
</xsl:stylesheet>

En este ejemplo, se utiliza una plantilla con el nombre "espacios" que recibe dos parámetros: "longitudTotal" para la cantidad de dígitos que debe tener el número formateado y "numero" para el número que se desea formatear.

Dentro de la plantilla, se crea una variable llamada "espacios" que contiene una cadena de espacios en blanco del tamaño necesario para cubrir la longitud total.

Luego, se calcula la longitud del número utilizando la función `string-length()`. Se determina la cantidad de espacios faltantes restando la longitud total menos la longitud del número.

Finalmente, se utiliza la función `substring()` para extraer la cantidad necesaria de espacios en blanco y se concatena con el número original utilizando la función `concat()`.

Con este enfoque, si tienes un número como "25", se agregarán dos espacios en blanco a la izquierda y se mostrará como " 25" (con espacios en blanco). Asegúrate de ajustar el valor de "longitudTotal" en la llamada a la plantilla para adaptarlo a tus necesidades específicas.

Espero que esto te ayude a formatear los números con espacios en blanco en XSLT.
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