2009-08-04 8 views

Répondre

13

Il n'y a pas de fonctions dans xslt 1.0 pour convertir en majuscules ou en minuscules. faire au lieu de ce qui suit:

S'il est nécessaire dans beaucoup d'endroits:

Déclarez ces deux variables xsl (ce qui est de rendre le xslt plus lisible)

<!-- xsl variables up and lo and translate() are used to change case --> 
    <xsl:variable name="up" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/> 
    <xsl:variable name="lo" select="'abcdefghijklmnopqrstuvwxyz'"/> 

Et utiliser les dans votre fonction pour changer traduire le cas

<xsl:value-of select="translate(@name,$lo,$up)"/> 

Si vous avez besoin de l'utiliser dans un seul pl as, pas besoin de déclarer des variables

<xsl:value-of select="translate(@name,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/> 
+0

ressemble beaucoup comme ma réponse, même si je ne l'ai pas écrire le code explicitement – noesgard

+0

@noesgard: Dans des liens étroits que vous devez faire un choix, il semble bien que votre réponse mais avec une meilleure mise en forme et un code explicite ... Pourtant, j'ai aussi augmenté le vôtre. – glmxndr

+0

Je suis désolé Noesgard, mais j'ai commencé à taper la réponse quand il n'y avait pas encore posté. Et j'ai posté ce que j'ai implémenté dans mon xslt. –

2

Peut-être que cela peut vous aider:

translate(string, string, string) 

La fonction prend une chaîne traduit et, caractère par caractère, ce qui se traduit par des caractères correspondant à la deuxième chaîne dans les caractères correspondants dans la troisième chaîne. C'est la seule façon de convertir les majuscules en minuscules dans XPath. Cela ressemblerait à ceci (avec un espace blanc supplémentaire ajouté pour la lisibilité). Ce code se traduirait par l'employé noms de famille en majuscules puis sélectionnez les employés dont les noms commencent par A.

descendant::employee[ 
starts-with(
    translate(@last-name, 
     "abcdefghijklmnopqrstuvwxyz", 
     "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), 
    "A" 
) 
] 

Si la deuxième chaîne a plus de caractères que la troisième chaîne, ces caractères supplémentaires seront retirés de la première chaîne Si la troisième chaîne a plus de caractères que la deuxième chaîne, les caractères supplémentaires sont ignorés.

(de http://tutorials.beginners.co.uk/professional-visual-basic-6-xml-part-1-using-xml-queries-and-transformations.htm?p=3)