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 :

[XSLT] transformation HTML problème sur les attributs


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut [XSLT] transformation HTML problème sur les attributs
    Bonjour,

    je débute dans le monde du XML/XSL veuillez m'en excuser si ma question est stupide.

    J'ai une page qui affiche via un fichier XSL un fichier XML.
    Tous les fichiers sont ci-joint.

    Ce fichier XML est architecturé de la façon suivante:

    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
     
    <srfil>
      <msg num="1">
        <msgbrut>
          <nom>Message SRFIL</nom>
          <valeur>
             .......
          </valeur>
        </msgbrut>
        <msgdecode>
          <info sigle="evt">
            <code>evt</code>
            <nom>Evènement</nom>
            <valeur>21</valeur>
            <desc>Emission d'un message de positionnement</desc>
          </info>
          <info sigle="date">
            <code>date</code>
            <nom>Date</nom>
            <valeur>01/12/2010</valeur>
          </info>
          <info sigle="heure">
            <code>heure</code>
            <nom>Heure</nom>
            <valeur>02:00:29</valeur>
          </info>
          <info sigle="am">
            <code>am</code>
            <nom>Station</nom>
            <valeur>0481</valeur>
            <desc>SMB2</desc>
          </info>
        </msgdecode>
      </msg>
    </srfil>
    dans mon fichier XSL je souhaite, pour chaque message contenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <info sigle="evt"> 
      ...
      </valeur>00</valeur>
    </info>
    ajouter des information de style CSS


    j'ai essayer ceci mais, cela m'applique le style pour tous les messages...

    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
     
    <xsl:template match="/">
      <xsl:for-each select="srfil/msg">
     
        <xsl:if test="msgdecode/info[@sigle='evt']/valeur='00'">
        <style>
          #msg
          {
            color : blue;
          }
        </style>
        </xsl:if>
     
        <div id="msg">
          <div id="msgbrut">
              <div class="msgbrutname"><xsl:value-of select="msgbrut/nom"/></div>
              <div class="msgbrutcontent">
                <xsl:for-each select="msgbrut/valeur/line">
                  <p><xsl:value-of select="." /></p>
                </xsl:for-each>
              </div>
          </div>
          <div id="msgdecode">
            <xsl:for-each select="msgdecode/info">
              <div id="info">
                <div class="nom"><xsl:value-of select="nom"/></div>
                <div class="code"><xsl:value-of select="code"/></div>
                <div class="valeur"><xsl:value-of select="valeur"/></div>
                <div class="desc"><xsl:value-of select="desc"/></div>
                <div class="detail"><xsl:value-of select="detail"/></div>
              </div>
            </xsl:for-each>
          </div>
      </xsl:for-each>
    </xsl:template>
     
    </xsl:stylesheet>
    SI quelqu'un peut m'aider à comprendre ce qui ne vas pas
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Ça ce n'est pas débuter en XSLT, c'est débuter en HTML.

    - Un id doit être unique dans le document. Donc tu ne peux pas mettre id="msg" dans une boucle, puisque ça veut dire que ça arrivera plus d'une fois.

    - Si tu utilises une balise <style>, il faut en faire une seule dans le <head> du document HTML, et la référencer avec class="machin" dans les éléments qui doivent l'appliquer.

    Exemple en HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <style>
      siglevent { color: blue; } 
    <style>
    ...
    <div class="siglevent">
    </div>
    Si cela ne te semble pas évident, oublie XSLT*pour l'instant et concentre-toi sur l'apprentissage de HTML. Chaque chose en son temps.

    Faire ça en XSLT :

    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
    <xsl:template match="/">
    <html>
      <head>
        <style>
          siglevent { color: blue; } 
        <style>
      </head>
      <body>
     
      <xsl:for-each select="truc">
        <div>
           <xsl:if test="machin">
              <xsl:attribute name="class">siglevent</xsl:attribute>
           </xsl:if>
           <div>Machin</div>
           <div>Bidule</div>
           ...
        </div>
      </xsl:for-each>
      ...
    <div class="siglevent">
    </div>
      </body>
    </html>
    </xsl:template>
    - Plus simple : sans balise <style> mais avec un attribut style="color: blue".

    En HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div style="color: blue">
    Si tu connais pas, laisse tomber XSLT et apprends d'abord HTML, bis repetita.

    Faire ça en XSLT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:for-each select="truc">
      <div>
         <xsl:if test="machin">
            <xsl:attribute name="style">color: blue</xsl:attribute>
         </xsl:if>
         <div>Machin</div>
         <div>Bidule</div>
         ...
      </div>
    </xsl:for-each>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    Salut,

    Merci pour l'explication.

    En fait peu de temps après je m'était rendu compte de la stupidité de la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        <xsl:if test="msgdecode/info[@sigle='evt']/valeur='00'">
        <style>
          #msg
          {
            color : blue;
          }
        </style>
        </xsl:if>
    Qui fatalement ajoute le style pour la totalité de la page...

    en tout cas merci pour ton aide. Je ne connaissait pas la commande:

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

Discussions similaires

  1. [HTML] Probléme avec les <title> sur google
    Par mecmec dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/11/2007, 23h49
  2. [XSLT] Transformer un xml en HTML : problème sur les liens
    Par elhout dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/03/2007, 10h46
  3. [XSLT] Afficher une seule fois les attributs redondants...
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 17/11/2005, 09h52
  4. [HTML] ReadOnly sur les <SELECT> ?
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 16/06/2005, 15h55
  5. question sur les attributs javascript
    Par PAYASS59 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/04/2005, 13h34

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