J'utilise une feuille de style XSLT pour créer un document Excel à partir d'un fichier XML. Une des valeurs que je suis en train de mettre en évidence, je veux l'afficher en majuscules. Comment est-ce possible?Feuille de style XSLT: modification du texte en majuscules
Répondre
XSLT 2.0 possède les fonctions fn: majuscule() et fn: minuscule(). Toutefois, dans le cas où vous utilisez de XSLT 1.0, vous pouvez utiliser la traduction():
<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>
+1, bien que ce soit la même stratégie que ma réponse gardant les variables des lettres est certainement une solution plus réutilisable. – Welbog
Absolument beau et facile :) –
Vous pouvez utiliser la fonction translate()
dans XSLT 1.0:
<xsl:value-of select="translate(//some-xpath,
'abcdefghijklmnopqrstuvwxyz',
'ABCDEFGHIJKLMNOPQRSTUVWXYZ')" />
Si vous êtes assez chanceux d'avoir accès à XSLT 2.0, vous pouvez utiliser la fonction upper-case()
:
<xsl:value-of select="upper-case(//some-xpath)"/>
Voir la XPath function reference page pour plus de détails.
+1 ;-) – Tomalak
Le nom d'Asker semble vaguement français ... qu'arrive-t-il à é? (désolé, je n'ai pas pu résister ...) – AakashM
@AakashM: C'est le problème avec la fonction 'translate()'. Vous devez spécifier toutes ces choses vous-même. 'upper-case()' est une bien meilleure option mais elle n'est pas suffisamment supportée. – Welbog
XPath 2.0 a fn:upper-case()
, qui effectue également les mappages de cas Unicode corrects.
Le moyen le plus et le plus propre à atteindre est le cas transforme par les moyens de CSS.
construire une classe, comme:
.upper { text-transform: uppercase; }
puis utilisez la classe span class:
<span class="upper">
<xsl:value-of select="myTextField" />
</span>
qui est tout :)
Vous pouvez également utiliser d'autres transformations:
text-transform: capitalize | uppercase | lowercase | none | inherit
Je crois que le PO créait un fichier Excel; pas HTML. –
Vous pouvez créer des fichiers Excel au format HTML. Je crois qu'il honorera CSS, mais je ne suis pas sûr à 100%. – iconoclast
Les solutions ne permettent pas la comparaison insensible à la casse des éléments de texte dans le document - ce qui est souvent la raison pour forcer le texte dans un cas unique et cohérent. Cette solution ne s'appliquera qu'au rendu de sortie du résultat. – Pekka
U SE Assemblée 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>
appel comme suit: select="user:ToUpper(//root/path)"
Ceci peut être utilisé en 1.0 ou 2.0.
Merci pour les modifications suggérées mech. – SparrowEatsHawk
duplication possible de [Comment puis-je convertir une chaîne en majuscules ou en minuscules avec XSLT?] (Http://stackoverflow.com/questions/586231/how-can-i-convert-a-string-to -upper-or-lower-case-with-xslt) – user