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?

25
demandé sur ErikE 2009-07-30 18:46:58

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>
54
répondu David Christiansen 2014-01-22 07:57:20

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.

18
répondu Welbog 2009-07-30 14:49:38

XPath 2.0 a fn:upper-case(), ce qui fait également Unicode corriger les mappages de cas.

3
répondu Tomalak 2009-07-30 14:52:41

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.

2
répondu SparrowEatsHawk 2017-10-13 20:22:39

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
-7
répondu MojoJojo 2015-05-11 21:46:20