xslt - ver - validaciones xsl
Hoja de estilos XSLT: cambiar el texto a mayúsculas (5)
Estoy usando una hoja de estilo XSLT para crear un documento de Excel a partir de un archivo XML. Uno de los valores que estoy extrayendo quiero mostrarlo en mayúscula. ¿Cómo es esto posible?
La forma más fácil y limpia de lograr transformaciones de casos es a través de CSS.
construir una clase, como:
.upper { text-transform: uppercase; }
luego usa la clase como clase span:
<span class="upper">
<xsl:value-of select="myTextField" />
</span>
Eso es :)
También puedes usar otras transformaciones:
text-transform: capitalize | uppercase | lowercase | none | inherit
Puede usar la función translate()
en XSLT 1.0:
<xsl:value-of select="translate(//some-xpath,
''abcdefghijklmnopqrstuvwxyz'',
''ABCDEFGHIJKLMNOPQRSTUVWXYZ'')" />
Si tiene la suerte de tener acceso a XSLT 2.0, puede usar la función upper-case()
:
<xsl:value-of select="upper-case(//some-xpath)"/>
Vea la página de referencia de la función XPath para más detalles.
Use una Asamblea como esta:
<msxsl:script implements-prefix="user" language="C#">
<!--{%assembly%}-->
<![CDATA[
public string ToUpper(string stringValue)
{
string result = String.Empty;
if(!String.IsNullOrEmpty(stringValue))
{
result = stringValue.ToUpper();
}
return result;
}
]]>
</msxsl:script>
Llámelo de la siguiente manera: select="user:ToUpper(//root/path)"
Esto se puede usar en 1.0 o 2.0.
XPath 2.0 tiene fn:upper-case()
, que también hace mapeos de casos correctos de Unicode.
XSLT 2.0 tiene funciones fn: mayúsculas () y fn: minúsculas (). Sin embargo, en caso de que esté usando XSLT 1.0, puede usar translate ():
<xsl:template match="/">
<xsl:variable name="smallcase" select="''abcdefghijklmnopqrstuvwxyz''" />
<xsl:variable name="uppercase" select="''ABCDEFGHIJKLMNOPQRSTUVWXYZ''" />
<xsl:value-of select="translate(doc, $smallcase, $uppercase)" />
</xsl:template>