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 :

[XSL] Placer une image avec la feuille de style


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut [XSL] Placer une image avec la feuille de style
    Bonjour !

    Je débute en XSL, XML, mais à partir de fichiers sources que je dois customiser, je suis tombé sur un problème dont je n'ai pas trouvé la solution grace au bon vieux Google.
    (Etant NOOB en xsl xml, je dois mal chercher peut-être )
    J'ai un fichier xml avec ceci dedans (entre autres):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <personnes>
          <personne>
            <name>Un Nom</name>
            <type1>Un type</type1>
            <type2>Un autre type</type2>
            etc...
          </personne>
    </personnes>
    et je voudrais en utilisant ma feuille de style XSL de ce type :
    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
    <xsl:template match="personne">
        <tr class="plist">
          <xsl:apply-templates/>
        </tr>
      </xsl:template>
      <xsl:template match="type1">
        <td class="plist">
          <xsl:apply-templates/>
          ----->Placer une image ici <---- (dans la page affichée par l'explorateur)
    
        </td>
      </xsl:template>
      <xsl:template match="type2">
          <td class="plist">
          <xsl:apply-templates/>
          ----->Placer une image ici <---- (dans la page affichée par l'explorateur)
        </td>
    etc...
    j'ai esseyé de mettre aux lignes indiquées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images/{typei}.gif"/>
    (i est le numéro correspondant )

    pour que celà affiche dans le navigateur l'image relative au typei désiré.
    Mais celà ne marche pas.
    Qu'est ce qui ne vas pas ?



    J'ai esseyé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images/="{./typei}.gif"/>
    mais ca ne marche pas non plus.

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut Re: [XSL] Placer une image avec la feuille de style
    Bonjour,

    il s'agit tout simplement d'un problème d'expression XPath. Ton expression {typei} se trouve dans un template pour les éléments typei ; ce qui signifie que lorsque cette expression est évaluée, le noeud courant est un typei.

    Les expressions XPath peuvent être de deux types : absolu ou relatif. Une expression est absolue, quand elle commence par / (la recherche démarre à la racine du document XML), sinon elle est relative et la recherche à partir du noeud courant (ou noeud contextuel).

    Il faut également absolument savoir que l'axe XPath utilisé par défaut dans une expression, quand aucun autre axe n'est précisé, est l'axe child (enfant). Donc, en écrivant {typei}, (que tu aurais pu écrire {child::typei} ce qui serait revenu au même) tu demandes littéralement à XPath de te renvoyer le contenu des éléments typei fils de l'élément courant. Evidemment, ce n'est pas ce qui est recherché.

    En fait, ce que l'on veut est le contenu de l'élément courant, qu'on peut obtenir en utilisant l'axe self :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images/{self::*}.gif"/>
    ou alors, pour une syntaxe plus lisible, en utilisant l'abbrévation de l'axe self qui est le point :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images/{.}.gif"/>
    D'autre part, il semble que le traitement soit le même pour tous les typei, quelle que soit la valeur de i ; si c'est le cas, tu as tout intérêt à les traiter tous dans le même template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="type1|type2"> 
        <td class="plist"> 
          <xsl:apply-templates/> 
          <img src="images/{.}.gif"/>
        </td> 
     </xsl:template>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Ca mrche !!!!!
    Merci !!!!

    Une autre question ? oui ?

    bon je me lance:

    j'ai les memes données de départ en xml, inchangeables.
    Mais je voudrais, avec la feuille de style d'identifier un typei se rapportant à une catégorie que j'ai définie.
    Je souhaite faire la afficher au navigateur dans une colonne supplémentaire.

    type 1-truc, type 1-bidule, type 1-machin appartiennent à la catégorie A (je l'ai "décidé") et se situent au niveau du type1
    type 1-chouette, type 1-marsoin, type 1-balbuzard appartiennent à la catégorie B (je l'ai "décidé" aussi) et se situent aussi au niveau du type1.

    ca ferait un tableau avec en en-tete du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    **************************************
    * Catégorie      * Nom   *     Type1    *     Type2
    **************************************
    *  A             * fezef  *  1-chouette  * peu importe
    *  A             * erhsf  *  1-marsoin  *  peu importe
    *  B             * yjdf   *  1-truc     * peu importe
    *  A             *  rg    * 1-balbuzard * peu importe
    (on place catégorie ou on veut on s'en fiche, mais si c'est possible de le placer voire de claser par catégorie alors la ! Je suis preneur !

    j'ai au départ en xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <personnes> 
          <personne> 
            <name>Un Nom</name> 
            <type1>Un type</type1> 
            <type2>Un autre type</type2> 
            etc... 
          </personne> 
    </personnes>
    et je peux pas y toucher (généré par application et impossible de compléter ou modifier la manière dont c'est généré).

    Comment faire ?

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

Discussions similaires

  1. Placer une image avec des cvPoint
    Par sweet live dans le forum OpenCV
    Réponses: 0
    Dernier message: 11/11/2012, 14h43
  2. Comment placer une image avec le code Java ?
    Par gabrielS dans le forum Android
    Réponses: 5
    Dernier message: 26/07/2012, 11h39
  3. Placer des images sur une image avec un JFrame
    Par blackhock dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 28/06/2009, 18h31
  4. [XSL-FO] Afficher une image avec XSL
    Par HebusBreizh dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 04/06/2007, 16h58
  5. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58

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