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

Cambiar a Mayuscula...XSL-FO

Estas en el tema de Cambiar a Mayuscula...XSL-FO en el foro de Programación General en Foros del Web. Hola: necesito cambiar a mayuscula lo que viene dentro del "xsl" esto es lo que intento hacer: <fo:block-container height="30mm" width="180mm" left="0mm" position="absolute" top="55mm"> <fo:block line-height="5mm" ...
  #1 (permalink)  
Antiguo 14/11/2005, 15:13
 
Fecha de Ingreso: noviembre-2005
Mensajes: 12
Antigüedad: 18 años, 5 meses
Puntos: 0
Exclamación Cambiar a Mayuscula...XSL-FO

Hola:

necesito cambiar a mayuscula lo que viene dentro del "xsl"

esto es lo que intento hacer:

<fo:block-container height="30mm" width="180mm" left="0mm" position="absolute" top="55mm">
<fo:block line-height="5mm" font-size="3mm" text-indent="1mm">
<xsl:value-of select="data[@name='paymentList']/@value"/>aaaaa
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
</fo:block>
</fo:block-container>

con el attribute name="text-transform" uppercase debiera cambiar a mayuscula.

Espero me puedan ayudar..

SL2.

JCO.
  #2 (permalink)  
Antiguo 14/11/2005, 16:47
 
Fecha de Ingreso: noviembre-2005
Mensajes: 12
Antigüedad: 18 años, 5 meses
Puntos: 0
UCASE en xsl

algo que me pueda transformar a mayuscula...
  #3 (permalink)  
Antiguo 15/11/2005, 05:00
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Funcion toUppercase

Hola jcamposortiz!

EN XSL 1.0 no existe una función que te transforme a mayúsculas una cadena de texto tienes que construirla tú. Aquí te dejo la función:

Código:
<xsl:template name="toUppercase">
    <xsl:param name="cadena" select="''" />
    <xsl:value-of select="translate($cadena,'aábcdeéfghiíjklmnñoópqrstuúüvwxyz','AÁBCDEÉFGHIÍJKLMNÑOÓPQRSTUÚÜVWXYZ')" />
</xsl:template>
Para que veas que funciona perfectamente prueba el siguiente ejemplo:

archivo.xml
Código:
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="archivo.xsl"?>
<palabra>alohA</palabra>
archivo.xsl

Código:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
    <xsl:call-template name="toUppercase">
        <xsl:with-param name="cadena">
            <xsl:value-of select="palabra/text()" />
        </xsl:with-param>
    </xsl:call-template>

</xsl:template>

<xsl:template name="toUppercase">
    <xsl:param name="cadena" select="''" />
    <xsl:value-of select="translate($cadena,'aábcdeéfghiíjklmnñoópqrstuúüvwxyz','AÁBCDEÉFGHIÍJKLMNÑOÓPQRSTUÚÜVWXYZ')" />
</xsl:template>
</xsl:stylesheet>
Ahora abres el archivo.xml con el internet explorer y verás como transforma perfectamente lo que pongas en la etiqueta
Código:
<palabra>
a mayúsculas.

Un beso
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #4 (permalink)  
Antiguo 16/11/2005, 10:30
 
Fecha de Ingreso: noviembre-2005
Mensajes: 7
Antigüedad: 18 años, 5 meses
Puntos: 0
Helvira:
En el www.3c.org se habla de la función de string "uppercase", sin embargo ésta no funciona. ¿Sabrías decir el por qué? ¿Se necesita añadir algún namespace?
Esto mismo he preguntado en otro post y nadie me ha contestado todavía.
Salu2.
  #5 (permalink)  
Antiguo 16/11/2005, 11:02
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Pues quizás sea porque hable de XSLT 2.0 y quizás tú estés utilizando la 1.0 y por eso no funciona.

Lo que no tengo claro es si cambiando simplemente el namespace ya puedes utilizar la especificación 2 o también depende del parser. Esto no lo sé porque nunca he trabajado con la versión 2. Sé que existe y que no debe ser complicado. De todas formas, prueba. Seguro que en la W3C tienes algún ejemplo. Fíjate en los namespaces declarados en la etiqueta raíz del XSL "stylesheet".

Pásame la URL exacta donde habla de la función esa y podré ayudarte más rápidamente.

Un beso
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #6 (permalink)  
Antiguo 16/11/2005, 11:04
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Pero vamos, que mi funcioncita va a las mil maravillas!!...

__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #7 (permalink)  
Antiguo 18/11/2005, 06:08
 
Fecha de Ingreso: noviembre-2005
Mensajes: 7
Antigüedad: 18 años, 5 meses
Puntos: 0
Hola Helbira:
Este es el código que uso en mi editor del XMLSpy:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<xsl:output method="xml" indent="yes"/>

<xsl:template match="/">
<root>
<nodo1><xsl:value-of select="upper-case('HolA')" /></nodo1>
</root>
</xsl:template>
</xsl:stylesheet>

La información relativa a la URI y el uso de funciones, la he obtenido de la siguiente página: http://www.w3schools.com/xpath/xpath_functions.asp.
Allí se indica que el namespace a usar es el http://www.w3.org/2005/02/xpath-functions.
Si accedes a esta última URL y seleccionas el link: XQuery 1.0 and XPath 2.0 Functions and Operators, podrás ver todas las funciones que deberían estar accesibles, entre ellas, upper-case.
Estoy usando el xmlSpy EnterpriseEdition, version 2004, rel. 4.
  #8 (permalink)  
Antiguo 18/11/2005, 06:28
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
De acuerdo

¡¡¡ COOOOOOL !!!
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
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 14:02.