Feuille de style XSLT: Modification du texte en majuscules
J'utilise une feuille de style XSLT pour créer un document Excel à partir d'un fichier XML. Une des valeurs que je tire dans je veux afficher en majuscules. Comment est-ce possible?
5 réponses
XSLT 2.0 a fn: majuscules() et FN:minuscules () fonctions. Cependant, si vous utilisez XSLT 1.0, vous pouvez utiliser 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>
Vous pouvez utiliser la fonction translate()
dans XSLT 1.0:
<xsl:value-of select="translate(//some-xpath,
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />
Si vous avez la chance d'avoir accès à XSLT 2.0, vous pouvez utiliser la fonction upper-case()
:
<xsl:value-of select="upper-case(//some-xpath)"/>
Voir la page de référence de la fonction XPath pour plus de détails.
XPath 2.0 a fn:upper-case()
, ce qui fait également Unicode corriger les mappages de cas.
Utilisez un assemblage comme ceci:
<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>
Appelez-le comme suit: select="user:ToUpper(//root/path)"
Cela peut être utilisé en 1.0 ou 2.0.
Le moyen le plus simple et le plus propre de réaliser des transformations de cas est au moyen de CSS.
Construire une classe, comme:
.upper { text-transform: uppercase; }
Ensuite, utilisez la classe comme classe span:
<span class="upper">
<xsl:value-of select="myTextField" />
</span>
C'est tout :)
Vous pouvez également utiliser d'autres transformations:
text-transform: capitalize | uppercase | lowercase | none | inherit