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 :

[débutant] [XSLT] mettre en valeur un mot


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut [débutant] [XSLT] mettre en valeur un mot
    Bonsoir,

    j'ai, par exemple, le document XML suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <?xml-stylesheet type="text/xsl" href="style.xsl" ?>
    <recette>
     <entete>
      <auteur>Monsieur X</auteur>
      <titre>Recette Y</titre>
      <remarque>Pour Z personne(s)</remarque>
     </entete>
     
     <procedure>
     blabla blabla blabla blabla blabla mot1 blabla blabla blabla blabla blabla (ici, je veux revenir à la ligne, à l'instar de la balise <br />)
     blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla blabla.
     </procedure>	
    </recette>
    Lors de la visualisation du document XML ci-dessus à l'aide du XSL, je veux mettre en valeur (en gras) mot1 et revenir à la ligne à l'endroit précisé.

    Merci d'avance.

  2. #2
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Bonjour,

    voici un autre exemple de document XML, plus parlant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <copyright>
    Copyright© 200<gras>7</gras> - 200<gras>8</gras>
    </copyright>
    Je veux le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Copyright© 2007 - 2008
    Merci pour votre aide.

  3. #3
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    Il te suffit de transformer la balise <gras> en <b> ou <strong> (si ta transformation se fait bien vers (X)HTML)
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  4. #4
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Bonjour,
    Citation Envoyé par Swoög Voir le message
    Salut !

    Il te suffit de transformer la balise <gras> en <b> ou <strong> (si ta transformation se fait bien vers (X)HTML)
    Oui, c'est évident ! Mais comment l'écrire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <p> 
      <xsl:value-of select="//pied_de_page/copyright" />
      <xsl:for-each select="//pied_de_page/copyright/gras">
       <b><xsl:value-of select="." /></b>
      </xsl:for-each>
     </p>
    Donne le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Copyright© 2007 - 200878
    Merci de m'aider.

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Hum... désolé, mais là il s'agit de notions élémentaires en XSLT...

    regarde les cours XSLT sur la page : http://xml.developpez.com/cours/

    Tu auras la réponse à ta question
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    Ho là là
    il ne faut pas utiliser de façon trop importante les for-each , xslt est un language de template
    donc ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:template match="???">
    <p> 
      <xsl:value-of select="//pied_de_page/copyright" />
      <xsl:for-each select="//pied_de_page/copyright/gras">
       <b><xsl:value-of select="." /></b>
      </xsl:for-each>
     </p>
    </xsl:template>
    pourrait donner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <xsl:template match="???">
    <p> 
      <xsl:apply-template select="//pied_de_page/*" />
     </p>
    </xsl:template>
     
    <xsl:template match="node() | @*">
    	<xsl:copy><xsl:apply-templates select="@* | node()"/></xsl:copy>
    </xsl:template>
     
    <xsl:template match="gras">
    	<b><xsl:apply-templates select="@* | node()"/></b>
    </xsl:template>

  7. #7
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Merci fraoustin,

    mais ton code ne fonctionne pas :
    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
    Document XSL
    ...
    <div id="pied_de_page">
    Citation Envoyé par fraoustin Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1234567891011121314
     
    <xsl:template match="/">
    <p> 
      <xsl:apply-template select="//pied_de_page/*" />
     </p>
    </xsl:template>
     
    <xsl:template match="node() | @*">
    	<xsl:copy><xsl:apply-templates select="@* | node()"/></xsl:copy>
    </xsl:template>
     
    <xsl:template match="gras">
    	<b><xsl:apply-templates select="@* | node()"/></b>
    </xsl:template>
    </div>
    À bientôt.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Montre nous ton xml, xsl et xml résultat complet, c'est sans doute pas grand chose. L'approche de fraoustin est la bonne.

  9. #9
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    si tu as un exemple je regarde cela

  10. #10
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Bonjour,

    voici respectivement les documents XML et XSL :
    test.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <?xml-stylesheet type="text/xsl" href="test.xsl" ?>
     
    <site_perso>
     <pied_de_page>
      <auteur>Webmestre : monsieur X</auteur>
      <email>Adresse E-mail : adresse@aaa.aa</email>
      <copyright>Copyright© 200<gras>7</gras> - 200<gras>8</gras></copyright>
     </pied_de_page>
    </site_perso>
    test.xsl:
    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
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <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" xml:lang="fr">
      <head>
       <title>Bonjour</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <style type="text/css">
       #pied_de_page
       {
    	 text-align: center;
    	 border: 1px solid blue;
       }
       </style>
      </head>
     
      <body>
       <div id="pied_de_page">
        <p>  
         <xsl:value-of select="//pied_de_page/auteur" /><br />
         <xsl:value-of select="//pied_de_page/email" /><br />
         <xsl:value-of select="//pied_de_page/copyright" />
    	</p>
       </div>
      </body>
     </html>
    </xsl:template>
    </xsl:stylesheet>
    Merci à vous.

  11. #11
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    je n'ai pas essayer dans un naviguateur mais en ligne de commande xalan ce code fonctionne
    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
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <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" xml:lang="fr">
      <head>
       <title>Bonjour</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <style type="text/css">
       #pied_de_page
       {
    	 text-align: center;
    	 border: 1px solid blue;
       }
       </style>
      </head>
     
      <body>
       <div id="pied_de_page">
        <p>  
         <xsl:apply-templates select="//pied_de_page/*" />
    	</p>
       </div>
      </body>
     </html>
    </xsl:template>
    <xsl:template match="gras">
    	<b><xsl:apply-templates select="@* | node()"/></b>
    </xsl:template>
    <xsl:template match="email">
    	<xsl:value-of select="."/><br/>
    </xsl:template>
    <xsl:template match="auteur">
    	<xsl:value-of select="."/><br/>
    </xsl:template>
    <xsl:template match="copyright">
    	<xsl:apply-templates select="@* | node()"/><br/>
    </xsl:template>
    <xsl:template match="node() | @*">
    	<xsl:copy><xsl:apply-templates select="@* | node()"/></xsl:copy>
    </xsl:template>
     
    </xsl:stylesheet>

  12. #12
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Merci fraoustin;

    ton code fonctionne parfaitement, j'ai fait du copier / coller mais j'essayerai de le comprendre par la suite.

    Bonne journée.

  13. #13
    Inactif  
    Inscrit en
    Mars 2006
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 352
    Points : 292
    Points
    292
    Par défaut
    Bonjour,
    Citation Envoyé par fraoustin Voir le message
    je n'ai pas essayer dans un naviguateur mais en ligne de commande xalan ce code fonctionne
    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
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <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" xml:lang="fr">
      <head>
       <title>Bonjour</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <style type="text/css">
       #pied_de_page
       {
    	 text-align: center;
    	 border: 1px solid blue;
       }
       </style>
      </head>
     
      <body>
       <div id="pied_de_page">
        <p>  
         <xsl:apply-templates select="//pied_de_page/*" />
    	</p>
       </div>
      </body>
     </html>
    </xsl:template>
    <xsl:template match="gras">
    	<b><xsl:apply-templates select="@* | node()"/></b>
    </xsl:template>
    <xsl:template match="email">
    	<xsl:value-of select="."/><br/>
    </xsl:template>
    <xsl:template match="auteur">
    	<xsl:value-of select="."/><br/>
    </xsl:template>
    <xsl:template match="copyright">
    	<xsl:apply-templates select="@* | node()"/><br/>
    </xsl:template>
    <xsl:template match="node() | @*">
    	<xsl:copy><xsl:apply-templates select="@* | node()"/></xsl:copy>
    </xsl:template>
     
    </xsl:stylesheet>
    Ce code ne fonctionne pas sous Mozilla Firefox !

    Cordialement,
    Sidahmed.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/09/2007, 00h32
  2. [XSLT] mettre une valeur d'un XML dans une variable ?
    Par xiii34 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/04/2007, 18h14
  3. Réponses: 4
    Dernier message: 01/09/2004, 16h56
  4. [Débutant] somme de la valeur d'attributs...
    Par SteelBox dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 10/07/2004, 22h38
  5. [débutant]ou mettre un fichier java pour une appli jsp?
    Par zozolh2 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/05/2004, 15h20

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