xsl tutorial transformar freeformater español ejemplos convertir xml xslt xpath wso2 wso2esb

xml - tutorial - xslt editor



Cómo cambiar la primera letra a minúscula usando XPath o XSLT (2)

Estoy usando wso2esb-4.8.1.

Deseo cambiar mi primera letra de solicitud a minúsculas. Estoy obteniendo parámetros de solicitud como este:

<property name="Methodname" expression="//name/text()" scope="default" type="STRING"/>

De esta manera estoy obteniendo nombres como

GetDetails, CallQuerys, ChangeService ...

Mientras que deseo cambiar todos los nombres para que sean así:

getDetails, callQuerys, changeService ...

Si quisiera subir o bajar la mayúscula de la caja del nombre completo, podría usar las funciones de XPath en fn:upper-case() y fn:lower-case() , pero mi requisito es diferente.

¿Cómo puedo cambiar todas las primeras letras solo a minúsculas?

¿Es posible con XPath o XSLT?


XPath 1.0:

<property name="Methodname" scope="default" type="STRING" expression="concat(translate(substring(//name/text(), 1, 1), ''ABCDEFGHIJKLMNOPQRSTUVWXYZ'', ''abcdefghijklmnopqrstuvwxyz''), substring(//name/text(), 2))"/>

XPath 2.0:

<property name="Methodname" scope="default" type="STRING" expression="concat(lower-case(substring(//name/text(), 1, 1)), substring(//name/text(), 2))"/>


Solo para agregar a kjhughes respuesta / esta respuesta aquí , es probable que desee usar esto junto con la transformación de identidad para copiar el resto del documento intacto:

<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="@name[ancestor::property]"> <xsl:attribute name="name"> <xsl:value-of select="concat(translate(substring(., 1, 1), ''ABCDEFGHIJKLMNOPQRSTUVWXYZ'', ''abcdefghijklmnopqrstuvwxyz''), substring(., 2))"/> </xsl:attribute> </xsl:template> </xsl:stylesheet>