IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

Changer le fond en fonction d'un contenu non-numérique [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2024
    Messages : 79
    Par défaut Changer le fond en fonction d'un contenu non-numérique
    Bonjour,

    J'ai un souci pour interpréter un cas particulier qu'on croise relativement souvent.

    Pour résumer un peu le contexte, je cherche à changer la couleur de fond d'un tableau en fonction du contenu de la balise version_code.

    Quand version_code est numérique, j'ai réussi à pondre un truc qui convient à mes collègues (je me suis limité à 10 couleurs de fond, et à partir de la 11eme version on reprend la 1ere couleur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <xsl:choose>
    						<xsl:when test="floor(version_code)=version_code">
    							<xsl:choose>
    								<xsl:when test="(version_code mod 10) = 0">
    									<xsl:attribute name="bgcolor">plum</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 1">
    									<xsl:attribute name="bgcolor">palegoldenrod</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 2">
    									<xsl:attribute name="bgcolor">aliceblue</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 3">
    									<xsl:attribute name="bgcolor">lightcoral</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 4">
    									<xsl:attribute name="bgcolor">honeydew</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 5">
    									<xsl:attribute name="bgcolor">gainsboro</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 6">
    									<xsl:attribute name="bgcolor">aquamarine</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 7">
    									<xsl:attribute name="bgcolor">antiquewhite</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 8">
    									<xsl:attribute name="bgcolor">beige</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="(version_code mod 10) = 0">
    									<xsl:attribute name="bgcolor">burlywood</xsl:attribute>
    								</xsl:when>
    							</xsl:choose>
    						</xsl:when>
    						<xsl:otherwise>
    							<!-- à partir d'ici, je dois gérer le cas où version_code n'est pas numérique> -->
    						</xsl:otherwise>
    					</xsl:choose>
    J'aurais pu ajouter d'autres couleurs, mais ç'aurait signifié alourdir le code, et je me suis limité à des couleurs claires pour garder un minimum de lisibilité (police en noir par défaut).

    Vous vous en doutez bien, le contenu de version_code n'est pas obligatoirement numérique, dans l'ERP qui génère le XML c'est un champ libre donc je peux autant avoir du 1, 2, que du v1, v2, COMM (pour la version commune), COLL (pour les collectors), ou carrément autre chose.
    Donc je ne peux pas prendre tous les cas particuliers existants, à chaque nouveau dossier avec plusieurs versions je pourrais avoir un nouveau cas à gérer et ça n'est pas le but (à la base les XSL sont censés être assez stables et durables).
    Par ailleurs, je n'ai pas le choix du processeur XSLT, on est en 1.0 et a priori ça n'est pas près de passer à XSLT2.

    Si je viens demander de l'aide, c'est que je ne peux pas forcément utiliser un tour de passe-passe comme position() (car je peux avoir plusieurs lignes avec le même version_code) ET que je n'ai pas trouvé d'autre balise numérique permettant l'identification (je ne peux par exemple pas colorer le fond en fonction de la quantité, ça serait le bazar), ni d'enfant exploitable (j'en avais trouvé, mais ça n'est pas forcément présent).

    Qu'est-ce que je pourrais utiliser comme méthode pour pouvoir mettre une couleur de fond à chaque changement de version_code où version_code n'est pas numérique ?

    Pour préciser un peu plus, j'ai appliqué un <xsl:sort select="version_code"/> qui me permet d'avoir toutes les occurrences d'un même version_code qui se suivent.
    Donc si une des réponses me permet de changer la couleur de fond si le version_code n'est pas numérique et qu'il est différent du précédent, ça pourrait potentiellement répondre à ma question.

    Merci d'avance

    (Edit pour cause de balise de commentaire non refermée dans mon code)

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 586
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 586
    Par défaut
    Hello,

    je dirais que l'approche la plus ressemblante à ce que tu as déjà, c'est de convertir tes valeurs non-numériques en valeurs numériques.

    Pour ça tu peux utiliser la fonction translate() pour convertir les lettres en chiffres. Pour rappel, après un appel à translate(), tous les caractères pour lesquels une conversion n'a pas été fournie sont simplement enlevés, donc une valeur comme a.b se retrouverait avec la même valeur numérique que ab

    Ca pourrait ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="code" select="translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRTUVXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10" />
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2024
    Messages : 79
    Par défaut
    Hello Thelvin,

    Merci pour le tuyau, ça ne me coûtera pas grand-chose de tester.

    Tel que je le comprends (et avec les quelques exemples que j'ai pu trouver), il faudrait vraiment que je tombe sur un gros coup de malchance pour avoir 2 version_code qui seraient traduits par le même code chiffré !

    Il me vient juste une interrogation, je me demande si je peux intégrer directement le translate dans mon premier choose (ce qui ferait que je m'affranchirais de la vérification préalable <xsl:when test="floor(version_code)=version_code">) ou si je dois quand même imbriquer mes 3 choose.

    Je vais tester avec 2 versions de mon code, et je garderai ce qui fonctionnera le mieux.

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2024
    Messages : 79
    Par défaut
    Un grand merci Thelvin, ta solution fonctionne donc.

    Après test, j'ai donc pu simplifier un peu mon code, avec le translate directement dans mon test je n'ai plus besoin de vérifier que floor(version_code) = version_code, puisque je force directement à avoir une valeur numérique.
    Ci-dessous, le code modifié, si ça peut servir à d'autres qui se poseraient la question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <xsl:choose>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 0">
    							<xsl:attribute name="bgcolor">plum</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 1">
    							<xsl:attribute name="bgcolor">palegoldenrod</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 2">
    							<xsl:attribute name="bgcolor">aliceblue</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 3">
    							<xsl:attribute name="bgcolor">lightcoral</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 4">
    							<xsl:attribute name="bgcolor">honeydew</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 5">
    							<xsl:attribute name="bgcolor">gainsboro</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 6">
    							<xsl:attribute name="bgcolor">aquamarine</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 7">
    							<xsl:attribute name="bgcolor">antiquewhite</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 8">
    							<xsl:attribute name="bgcolor">beige</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 0">
    							<xsl:attribute name="bgcolor">burlywood</xsl:attribute>
    						</xsl:when>
    					</xsl:choose>
    Il ne me reste plus qu'à gérer le cas (particulier, mais que j'ai croisé) où j'ai un dossier dans lequel j'ai les version_code suivants : COMM, V1 et V2.
    Dans ce cas particulier, COMM est traduit en 2422, V1 en 11 et V2 en 12.
    Or, 2422 modulo 10 et 12 modulo 10, dans les cas : = 2

    Solution de contournement à laquelle je pense : si le résultat du translate modulo 10 égale 2, alors si version_code = COMM, je mets du blanc en fond, sinon je laisse en aliceblue.

    Dans tous les cas, à ce niveau ça tient presque du détail puisque j'aurais 2-3 cas particuliers au maximum à gérer, et je passe le sujet en résolu parce que ça a tapé dans le mille.

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 003
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 003
    Par défaut
    Plutôt que de faire un when par couleur, tu devrais placer tes couleurs dans une variable, puis faire un calcul qui te renvoie l'index de ta couleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:variable name="colors">
        <item>plum</item>
        <item>palegoldenrod</item>
        <item>aliceblue</item>
        <item>lightcoral</item> 
        <item>honeydew</item>
        <item>gainsboro</item>
        <item>aquamarine</item>
        <item>antiquewhite</item>
        <item>beige</item>
        <item>burlywood</item>
    </xsl:variable>
    <xsl:param name="color" select="document('')//xsl:variable[@name='colors']/*"/>
    puis plus loin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:attribute name="bgcolor">
        <xsl:value-of
            select="$color[
                translate(
                    current(),
                    'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
                    '0123456789012345678901234501234567890123456789012345'
                ) mod 10 + 1]"/>
    </xsl:attribute>
    plus besoin de when.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2024
    Messages : 79
    Par défaut
    Citation Envoyé par CosmoKnacki Voir le message
    Plutôt que de faire un when par couleur, tu devrais placer tes couleurs dans une variable, puis faire un calcul qui te renvoie l'index de ta couleur:
    puis plus loin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xsl:attribute name="bgcolor">
        <xsl:value-of
            select="$color[
                translate(
                    current(),
                    'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
                    '0123456789012345678901234501234567890123456789012345'
                ) mod 10 + 1]"/>
    </xsl:attribute>
    plus besoin de when.
    Je serais assez tenté d'essayer pour comparer les performances (si le résultat du translate modulo 10 est grand, on effectue potentiellement moins d'opérations).
    Mais j'ai déjà deux questions :
    La première concerne le +1, c'est pour ajouter 1 au résultat du modulo pour que le résultat final corresponde à l'index des items de la variable ? (j'aime bien comprendre au lieu de copier/coller bêtement du code)
    La deuxième concerne plutôt mes cas particuliers (par exemple COMM, NORM et V2 qui vont tous êtes égaux à 2 modulo 10), comment je peux les gérer avec ce calcul ?

    Mon code modifié ressemble maintenant à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <xsl:choose>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 0">
    							<xsl:attribute name="bgcolor">plum</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 1">
    							<xsl:attribute name="bgcolor">palegoldenrod</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 2">
    							<xsl:choose>
    								<xsl:when test="version_code='COMM'">
    									<xsl:attribute name="bgcolor">white</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="version_code='NORM'">
    									<xsl:attribute name="bgcolor">aliceblue</xsl:attribute>
    								</xsl:when>
    								<xsl:otherwise>
    									<xsl:attribute name="bgcolor">moccasin</xsl:attribute>
    								</xsl:otherwise>
    							</xsl:choose>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 3">
    							<xsl:attribute name="bgcolor">lightcoral</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 4">
    							<xsl:attribute name="bgcolor">honeydew</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 5">
    							<xsl:attribute name="bgcolor">gainsboro</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 6">
    							<xsl:attribute name="bgcolor">aquamarine</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 7">
    							<xsl:attribute name="bgcolor">antiquewhite</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 8">
    							<xsl:attribute name="bgcolor">beige</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', '01234567890123456789012345678901234501234567890123456789012345') mod 10) = 0">
    							<xsl:attribute name="bgcolor">burlywood</xsl:attribute>
    						</xsl:when>
    					</xsl:choose>
    Je me suis permis de retirer l'index dans ma citation pour un peu plus de lisibilité.

  7. #7
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 003
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 003
    Par défaut
    Mais j'ai déjà deux questions :
    La première concerne le +1, c'est pour ajouter 1 au résultat du modulo pour que le résultat final corresponde à l'index des items de la variable ? (j'aime bien comprendre au lieu de copier/coller bêtement du code)
    C'est exactement ça, les indexes d'un jeu d'éléments commencent à 1 (et pas à 0).

    La deuxième concerne plutôt mes cas particuliers (par exemple COMM, NORM et V2 qui vont tous êtes égaux à 2 modulo 10), comment je peux les gérer avec ce calcul ?
    Je ne pense pas qu'utiliser un calcul plutôt qu'une succession de tests change le problème, mais si j'ai une idée lumineuse, je t'en ferais part.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  8. #8
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2024
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2024
    Messages : 79
    Par défaut
    Bonjour,

    Un edit bien bourrin pour donner la solution si d'autres ont le même cas que moi.

    Pour rappel, j'avais des cas particuliers avec des version_code qui pouvaient contenir des caractères comme &, un espace ou finir par un point.
    À noter : cette solution fonctionne dans une situation relativement particulière, mais pourrait poser problème dans d'autres cas (si par exemple l'utilisateur cherche à compléter sa chaîne par un espace).
    Cela dit, dans ce cas il suffirait de replacer un substing-before(chaine, ' ') pour éliminer tout ce qui est présent avant le premier espace de la chaîne.

    Dans mon cas, j'ai choisi de transformer les espaces en 9 (puisque n'ayant pas vu d'espace en fin de chaîne) et de ne mesurer la traduction que de la partie avant un point.
    Je n'ai pas géré le cas du &, ou &amp;, qui semble très exceptionnel et qui sera donc blanc (bien que je pourrais dans l'ensemble faire un substring-before(version_code, '&').

    En termes d'ordre, j'ai choisi de traiter la présence du point après mon choose, en partant du postulat que dans le pire des cas j'appliquerais 2 changements de couleurs (donc la dernière couleur serait conservée).

    Ci-dessous le code modifié, pour inspiration des prochains
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    					<xsl:choose>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 0">
    							<xsl:attribute name="bgcolor">plum</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 1">
    							<xsl:attribute name="bgcolor">palegoldenrod</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 2">
    							<xsl:choose>
    								<xsl:when test="version_code='COMM'">
    									<xsl:attribute name="bgcolor">white</xsl:attribute>
    								</xsl:when>
    								<xsl:when test="version_code='NORM'">
    									<xsl:attribute name="bgcolor">aliceblue</xsl:attribute>
    								</xsl:when>
    								<xsl:otherwise>
    									<xsl:attribute name="bgcolor">moccasin</xsl:attribute>
    								</xsl:otherwise>
    							</xsl:choose>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 3">
    							<xsl:attribute name="bgcolor">lightcoral</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 4">
    							<xsl:attribute name="bgcolor">honeydew</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 5">
    							<xsl:attribute name="bgcolor">gainsboro</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 6">
    							<xsl:attribute name="bgcolor">aquamarine</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 7">
    							<xsl:attribute name="bgcolor">antiquewhite</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 8">
    							<xsl:attribute name="bgcolor">beige</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="(translate(version_code, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 9">
    							<xsl:attribute name="bgcolor">burlywood</xsl:attribute>
    						</xsl:when>
    					</xsl:choose>
    					<xsl:if test="contains(version_code,'.')">
    						<xsl:choose>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 0">
    								<xsl:attribute name="bgcolor">plum</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 1">
    								<xsl:attribute name="bgcolor">palegoldenrod</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 2">
    								<xsl:attribute name="bgcolor">moccasin</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 3">
    								<xsl:attribute name="bgcolor">lightcoral</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 4">
    								<xsl:attribute name="bgcolor">honeydew</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 5">
    								<xsl:attribute name="bgcolor">gainsboro</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 6">
    								<xsl:attribute name="bgcolor">aquamarine</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 7">
    								<xsl:attribute name="bgcolor">antiquewhite</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 8">
    								<xsl:attribute name="bgcolor">beige</xsl:attribute>
    							</xsl:when>
    							<xsl:when test="(translate(substring-before(version_code,'.'), '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ', '012345678901234567890123456789012345012345678901234567890123459') mod 10) = 9">
    								<xsl:attribute name="bgcolor">burlywood</xsl:attribute>
    							</xsl:when>
    						</xsl:choose>
    					</xsl:if>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/03/2018, 11h06
  2. Changer style d'un TextView en fonction de son contenu
    Par catapicultrophe dans le forum Composants graphiques
    Réponses: 3
    Dernier message: 11/11/2013, 11h08
  3. Réponses: 1
    Dernier message: 22/11/2012, 16h16
  4. Hauteur du fond en fonction du contenu.
    Par JeanJean75 dans le forum Mise en page CSS
    Réponses: 12
    Dernier message: 20/11/2009, 00h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo