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>