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

XML/XSL et SOAP Discussion :

Atteindre directement une valeur


Sujet :

XML/XSL et SOAP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut Atteindre directement une valeur
    Bonjour,

    je pense que c'est réalisable en XSL mais j'ai du mal avec ce langage.
    Je cherche à atteindre une valeur directement. Je m'explique, j'ai ce fichier XML:

    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
    <FICHIER>
    <INDICE>0</INDICE>
    <TEXTES>
    <TITRE_FR>Vignette</TITRE_FR>
    <TITRE_EN>Thumbnail</TITRE_EN>
    <DESCRIPTION_EN>Thumbnail</DESCRIPTION_EN>
    </TEXTES>
    <FICHIER_JOINT>
    <NOM_FICHIER>
    http://www.mondomaine.com/toto0.jpg
    </NOM_FICHIER>
    <TYPE_MIME>image/jpeg</TYPE_MIME>
    </FICHIER_JOINT>
    </FICHIER>
    <FICHIER>
    <INDICE>1</INDICE>
    <TEXTES>
    <TITRE_FR>Image principale</TITRE_FR>
    </TEXTES>
    <FICHIER_JOINT>
    <NOM_FICHIER>
    http://www.mondomaine.com/toto1.jpg
    </NOM_FICHIER>
    <TYPE_MIME>image/jpeg</TYPE_MIME>
    </FICHIER_JOINT>
    </FICHIER>
    En fait je voudrais vérifier que si j'ai l'indice = à 1 qui existe (il peut exister jusqu'à 5 indices), alors j'affiche l'image toto1.jpg, en revanche s'il n'existe pas d'indice = à 1, alors j'affiche une autre image www.mondomaine.com/noimage.jpg.

    Comment puis je faire ça en XSL? Par avance merci.

    Alex

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    C'est assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:template match="/">
    	<html>
    	<xsl:choose>
    		<xsl:when test="/FICHIER/INDICE = '1'">
    			<img src="toto1.jpg"/>
    		</xsl:when>
    		<xsl:otherwise>
    			<img src="noimage.jpg"/>
    		</xsl:otherwise>
    	</xsl:choose>
    	</html>
    </xsl:template>

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Merci, c'est simple, toutefois je n'obtiens pas ce que je veux. En fait je réalise que j'aurais du préciser que je voulais récupérer le chemin indiqué dans <FICHIER_JOINT> <NOM_FICHIER>

    JE fais ceci mais je récupère inlassablement la photo toto0.jpg:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:choose>
        <xsl:when test="cml:FICHIER/cml:INDICE = '1'">
          <a href="{cml:FICHIER/cml:FICHIER_JOINT/cml:NOM_FICHIER}" class="photo_encart_detail"><img src="{cml:FICHIER/cml:FICHIER_JOINT/cml:NOM_FICHIER}" border="0" height="250px" width="333px" /></a>
        </xsl:when>
        <xsl:otherwise>
          <img src="theme/noimage.jpg" height="236px" width="213px" class="photo_encart_detail" />
        </xsl:otherwise>
      </xsl:choose>

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cml:FICHIER[@cml:INDICE = '1']/cml:FICHIER_JOINT
    ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Merci pour la réponse, mais j'ai pas mieux.

    C'est quand même dingue, que rien ne fonctionne!

    A moins que je me sois trompé dans la syntaxe?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="{cml:FICHIER[@cml:INDICE = '1']/cml:FICHIER_JOINT/cml:NOM_FICHIER}" class="photo_encart_detail"><img src="{cml:FICHIER[@cml:INDICE = '1']/cml:FICHIER_JOINT/cml:NOM_FICHIER}" border="0" height="250px" width="333px" /></a>

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    En fait, il faudrait nous dire ce que tu as déjà réussi à avoir et comment.

    Nos réponses marchent toutes parfaitement, si elles sont appliquées dans le bon contexte.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Et bien j'ai indiqué ce que j'ai fait plus haut. Vous avez le fichier XML tout en haut et dans mes 2 derniers posts vous avez ce que j'ai fait et le résultat.

    J'obtiens toujours la première photo alors que je veux la deuxième (celle qui a l'indice à 1).

    Voici ce que j'ai fait précisément:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:template name="vignette">
    <xsl:choose>
        <xsl:when test="cml:FICHIER/cml:INDICE = '1'">
          <a href="{cml:FICHIER[@cml:INDICE = '1']/cml:FICHIER_JOINT/cml:NOM_FICHIER}" class="photo_encart_detail"><img src="{cml:FICHIER[@cml:INDICE = '1']/cml:FICHIER_JOINT/cml:NOM_FICHIER}" border="0" height="250px" width="333px" /></a>
        </xsl:when>
        <xsl:otherwise>
          <img src="theme/noimage.jpg" height="236px" width="213px" class="photo_encart_detail" />
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:apply-templates select="cml:FICHIER">
    		            <xsl:sort select="cml:INDICE" data-type="number" order="ascending"/>
    		        </xsl:apply-templates>
    Mais dans ce cas je n'obtiens rien du tout. Rien dans href et rien dans l'image (après src).

    J'ai réglé mon problème en faisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:template name="vignette">
      <xsl:choose>
        <xsl:when test="cml:FICHIER/cml:INDICE = '1'">
          <a href="{cml:FICHIER[2]/cml:FICHIER_JOINT/cml:NOM_FICHIER}" class="photo_encart_detail"><img src="{cml:FICHIER[2]/cml:FICHIER_JOINT/cml:NOM_FICHIER}" border="0" height="250px" width="333px" /></a>
        </xsl:when>
        <xsl:otherwise>
          <img src="theme/noimage.jpg" height="236px" width="213px" class="photo_encart_detail" />
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>

  8. #8
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Et bien j'ai indiqué ce que j'ai fait plus haut. Vous avez le fichier XML tout en haut et dans mes 2 derniers posts vous avez ce que j'ai fait et le résultat.
    Non, vous n'avez pas montré, pas quelque choses de cohérantes. Le "fichier" XML n'est pas un XML document, c'est un xml fragment au plus.

    Et puis, vous n'avez montré aucun info sur l'espace de nom, cml fait parâitre soudainement dans xpath et xslt.

    Et puis, sans besoin beaucoup de info réel, ceci sonne contraditoire:
    <xsl:when test="cml:FICHIER/cml:INDICE = '1'">
    <a href="{cml:FICHIER[@cml:INDICE = '1']/cml:FICHIER_JOINT/cml:NOM_FICHIER}" class="photo_encart_detail"><img src="{cml:FICHIER[@cml:INDICE = '1']/cml:FICHIER_JOINT/cml:NOM_FICHIER}" border="0" height="250px" width="333px" /></a>
    </xsl:when>
    Soit INDICE est un élément, soit INDICE est un attribut. A vous de décider.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Oui c'est vrai c'est un fragment de fichier, j'ignorais qu'il vous fallait la totalité pour me donner une réponse.

    Soit INDICE est un élément, soit INDICE est un attribut. A vous de décider.
    Voyez mon fragment dans mon premier post, sauf erreur de ma part, il s'agit d'un élément et non d'un attribut.

  10. #10
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    j'ignorais qu'il vous fallait la totalité pour me donner une réponse.
    Méfiez-vous. On a zéro intérêt sa totalité - vous la guardez tout au long de sa vie - juste une pertinente représentation. Comme on peut tout de même constater de par votre réponses que vous n'avez pas très bien saisi le concept de "contexte" etc et vous par conséquence faites de mauvais jugement ce qu'il faut montrer et ce qu'il n'a rien à voir...

    Voyez mon fragment dans mon premier post, sauf erreur de ma part, il s'agit d'un élément et non d'un attribut.
    Très bien et alors? Vous ne voyez pas pourquoi je soulevais la citation?

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ça va, cette histoire d'attribut, c'est moi qui l'ai provoquée par erreur, en mettant un @ dans mon exemple. Foutus réflexes.
    Il suffit de l'enlever, donc.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 81
    Points : 43
    Points
    43
    Par défaut
    Très bien et alors? Vous ne voyez pas pourquoi je soulevais la citation?
    Non je ne vois pas très bien, et pour tout vous dire, sans vouloir vous heurter, je n'ai pas saisi votre message tout court.

    En tous cas, merci de m'avoir mis sur la piste.

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/02/2015, 14h47
  2. Atteindre une valeur dans un fichier xml
    Par Syriel dans le forum C#
    Réponses: 7
    Dernier message: 31/03/2009, 10h57
  3. Réponses: 7
    Dernier message: 03/10/2008, 11h37
  4. Réponses: 3
    Dernier message: 02/01/2007, 13h53
  5. Réponses: 5
    Dernier message: 18/11/2005, 22h11

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