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 :

alterner les couleurs dans un tableau avec xsl


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 12
    Points
    12
    Par défaut alterner les couleurs dans un tableau avec xsl
    salut, desolé de vous posez cette question car j'ai deja vu la reponse sur un site mais j'ai oublié lequel. Et c'est assez urgent


    Donc je souhaite faire un tableau avec une ligne sur deux de coloré.
    Les données proviennent d'un xml bien sur, et c'est une xsl qui doit faire ce tableau

    le xml:

    <top>

    <ligne>
    <nom>paul</nom>
    ...
    </ligne>

    <ligne>
    <nom>jean</nom>
    ...
    </ligne>

    <ligne>
    <nom>george</nom>
    ...
    </ligne>

    </top>

    le resultat doit etre un tableau avec
    une ligne avec les infos de paul avec fond gris
    une ligne avec les infos de paul avec fond blanc
    une ligne avec les infos de george avec fond gris

    merci d avance
    -Le nain porte quoi?-

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 35
    Points : 42
    Points
    42
    Par défaut
    ben tu peux faire un truc tout con genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:choose>
        <xsl:when test="position() "modulo" 2=0">
            <!-- en gris -->
        </xsl:when>
        <xsl:otherwise>
            <!-- en blanc -->
        </xsl:otherwise>
    </xsl:choose>
    la seule chose qu'il afut que tu cherches c'est comment on fait un modulo en xsl parce que je m'en rappelle plus

    bon courage
    Karuto
    MCSA, MSCE (Win2K), MCDBA (SQL 2K)

  3. #3
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    <xsl:when test="(position() mod 2) = 0">
    ...
    </xsl:when>
    RDM
    Tout Est Relatif
    Rubrique XMLRAD: http://xmlrad.developpez.com
    FAQ XMLRAD: http://xmlrad.developpez.com/faq/

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    j'allais le dire...merci, c'est presque bon car en fait mes données sont bizarres:

    j'ai

    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
    <top>
         <param>
                <type>global</type>
                <nom>para 1 </nom>
         </param>
         <param>
                <type>detail</type>
                <nom>para 2 </nom>
         </param>       
         <param>
                <type>detail</type>
                <nom>para 3 </nom>
         </param>       
         <param>
                <type>global</type>
                <nom>para 4 </nom>
         </param>            
     
         <param>
                <type>global</type>
                <nom>para 5 </nom>
         </param>
         <param>
                <type>detail</type>
                <nom>para 6 </nom>
         </param>
         <param>
                <type>global</type>
                <nom>para 7 </nom>
         </param>
     
    </type>
    sachant que :
    -Les globaux sont toujours suivient de leurs details
    -il n'est pas possible d'inclure les details dans les données du global

    il faudrai que dans le tableau ca change de couleur que quan c'est un global.Comment puisje faire?
    pour avoir au final

    (en rouge)
    para 1
    para 2
    para 3
    (en vert)
    para 4
    (en rouge)
    para 5
    para 6
    (en vert)
    para 7 etc...
    -Le nain porte quoi?-

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 35
    Points : 42
    Points
    42
    Par défaut
    je ne comprends pas pourquoi tu ne peux pas inclure les details dans les globaux, ca serait tellement plus simple de faire ..

    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
     
    <top> 
         <param> 
                <nom>para 1 </nom> 
                <details>
                            <nom>para2</nom>
                            <nom>para3</nom>
                </details>
         </param> 
         <param> 
                <nom>para 4 </nom> 
         </param>            
         <param> 
                <nom>para 5 </nom> 
                <details>
                            <detail>para6</detail>
                </details>
         </param> 
         <param> 
                <type>global</type> 
                <nom>para 7 </nom> 
         </param> 
    </type>
    a mon avis ca sera deja plu simple a filtrer si quoi qu'il arrive un global est suivi de ses details alors si les details sonts des noeuds fils de l'element param tu n'as meme plus besoin de spécifier que "para 1" est un global puisqu'il est a la racine de l'element param et "para 2" et "para 3" sont des fils de l'element details ...
    c'est une facon de faire tu en as 250 autres
    Karuto
    MCSA, MSCE (Win2K), MCDBA (SQL 2K)

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    c'est assez compliqué, mais pour faire simple: c'est imposé par plusieurs chose mon entreprise et le fait que ce xml est generer par XSU (xml sql utilitise) qui genere le xml avec toujours pour faire simple un select.

    Le probleme est que les detail sont dans la même table que les globaux et qu'il sont en tout point identique excepté le champs type et un champs clé qui reference le global (ce champ etant null pour les globaux)

    Ca c'est pour faire simple car la requete est encore plus tordu.

    Voila donc je n'ai pas le choix et d'apres la personne qui fait la requete et qui me fournit le xml elle peut pas faire mieu.

    j'aivais pensé transformé le xml en xml pour avoir ce que tu me dis puis le retransformé en html.Mais je maitrise pas encore assez xsl pour le faire. Si quelqu un a uneidée, une piste ou un methode...
    -Le nain porte quoi?-

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 35
    Points : 42
    Points
    42
    Par défaut
    je pense que ca serait effectivement utilie soit de transformer le xml avant de le traiter. parce que la la structuration est pas vraiment pratique. Mais xsl est la pour ca alors soit tu le fais en 2 feuilles de styles pour d'abord transformer dans une structure plus pratique et ensuite tu fais ton affichage, soit tu le fais en une seule feuille de style avec par exemple plusieurs template, ou alors avec des imports etc etc
    bon courage
    Karuto
    MCSA, MSCE (Win2K), MCDBA (SQL 2K)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 73
    Points : 66
    Points
    66
    Par défaut
    ben moi j'ai un soucis
    j'ai fait ça et ca marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:template match="produitim|produitabs" >
    	<TR>
    		<xsl:when test="(position() mod 2) = 0">
    			<xsl:attribute name="bgcolor">#CCCCFF</xsl:attribute>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:attribute name="bgcolor">#FFCCFF</xsl:attribute>
    		</xsl:otherwise>
    ........
    </TR>
    apparemment la balise when ou attribute est mal placé mais je vois pas comment faire en php ca passe par contre mais il affiche tout en rose

    Merci de m'aider

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2002
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    une solution simple pour l'alternance des couleurs entre les lignes d'un tableau est donnée ici :
    http://www.dpawson.co.uk/xsl/sect2/N7450.html#d793e82

    ...et ca marche tres bien

    a+

  10. #10
    Membre régulier Avatar de agueffier
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 93
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par chtiboss
    ben moi j'ai un soucis
    j'ai fait ça et ca marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:template match="produitim|produitabs" >
    	<TR>
    		<xsl:when test="(position() mod 2) = 0">
    			<xsl:attribute name="bgcolor">#CCCCFF</xsl:attribute>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:attribute name="bgcolor">#FFCCFF</xsl:attribute>
    		</xsl:otherwise>
    ........
    </TR>
    apparemment la balise when ou attribute est mal placé mais je vois pas comment faire en php ca passe par contre mais il affiche tout en rose

    Merci de m'aider
    Je pense que cela fonctionnera mieux avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:template match="produitim|produitabs" >
    	<TR>
            <xsl:choose>
    		<xsl:when test="(position() mod 2) = 0">
    			<xsl:attribute name="bgcolor">#CCCCFF</xsl:attribute>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:attribute name="bgcolor">#FFCCFF</xsl:attribute>
    		</xsl:otherwise>
             </xsl:choose>
    ........
    </TR>

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    J'ai un probleme symilaire en fait, est-il possible de faire la meme chose avec un tableau?

    cad mettre une ligne dans la colone de gauche, mettre la suivante dans la colone de droite, passer a la ligne suivante de mon tableau et rebelotte.

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Citation Envoyé par agueffier Voir le message
    Je pense que cela fonctionnera mieux avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:template match="produitim|produitabs" >
    	<TR>
            <xsl:choose>
    		<xsl:when test="(position() mod 2) = 0">
    			<xsl:attribute name="bgcolor">#CCCCFF</xsl:attribute>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:attribute name="bgcolor">#FFCCFF</xsl:attribute>
    		</xsl:otherwise>
             </xsl:choose>
    ........
    </TR>

    Excellent !

    Pour info, voici ce que j'ai en appliquant les données :
    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
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>XSLT</title>
          </head>
          <body>
            <table width="1000" border="1" cellspacing="0" cellpadding="0">
              <tr>
                <th scope="col">Auteurs</th>
                <th scope="col">Titres</th>
                <th scope="col">Dates</th>
                <th scope="col">Prix</th>
              </tr>
              <xsl:for-each select="/inventaire/livre">
                <tr>
    		         <xsl:choose>
    					<xsl:when test="(position() mod 2) = 0">
    						<xsl:attribute name="bgcolor">#CCCCFF</xsl:attribute>
    					</xsl:when>
    					<xsl:otherwise>
    						<xsl:attribute name="bgcolor">#FFCCFF</xsl:attribute>
    					</xsl:otherwise>
    		         </xsl:choose>
                  <td>
                    <xsl:value-of select="auteur" />
                  </td>
                  <td>
                    <xsl:value-of select="titre" />
                  </td>
                  <td>
                    <xsl:value-of select="date" />
                  </td>
                  <td>
                    <xsl:value-of select="prix" />
                  </td>
                </tr>
              </xsl:for-each>
            </table>
          </body>
        </html>
      </xsl:template>
    </xsl:stylesheet>

    Cela fonctionne très bien !
    OS : LinuxMint 20

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Oui enfin, depuis 2008, tu aurais pu faire ça simplement en CSS, sans impliquer XSLT là-dedans -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 757
    Points : 572
    Points
    572
    Par défaut
    Oui enfin, depuis 2008,


    Quel rapport avec l'année de mon inscription sur le site ?
    OS : LinuxMint 20

  15. #15
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Aucun. Mais c'est depuis 2008 à la louche qu'on peut faire ça en CSS sans problème. Et là, nous sommes en 2015. Je pense pas qu'il était nécessaire de faire compliqué.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Alterner les couleurs d'un tableau
    Par medhan dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/11/2013, 00h16
  2. Réponses: 2
    Dernier message: 03/12/2008, 17h46
  3. [Tableaux] Alternance des couleur dans un tableau
    Par leduc26 dans le forum Langage
    Réponses: 5
    Dernier message: 03/06/2007, 19h01
  4. Alterner les couleurs des lignes d'un tableau
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/06/2006, 21h13
  5. Alterner les couleurs dans un tableau
    Par langela94 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 24/01/2006, 13h56

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