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 :

Requête XML sur un prédicat autre qu'un attribut -> Est-ce possible ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut Requête XML sur un prédicat autre qu'un attribut -> Est-ce possible ?
    Bonjour,
    Voici ce qui m'arrive :
    J'ai une base XSL qui me permet de trouver dans le fichier XML le texte "Destination" grâce au prédicat @cible='ok' de la balise <r> correspondante...

    Seulement, j'aimerais que ce texte "Destination" soit trouvé même si l'attribut @cible n'existe pas...
    Autrement dit, existe t-il un moyen (prédicat...) permettant de rechercher directement le texte "Destination" ?

    En vous remerciant par avance !

    ********************
    Code PHP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
       $xslDoc = new DOMDocument();
       $xslDoc->load("XSL.xsl");
     
       $xmlDoc = new DOMDocument();
       $xmlDoc->load("XML.xml");
     
       $proc = new XSLTProcessor();
       $proc->importStylesheet($xslDoc);
       echo $proc->transformToXML($xmlDoc);
    ?>
    Code XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <enregistrements>
    	<r>
    		<r cible="ok">Destination
    			<album titre="Le jour se lève">
    					<auteur>Dess</auteur>
    					<année>1990</année>
    			</album>
    		</r>
    	</r>
    </enregistrements>
    Code 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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" 
    encoding="utf-8" 
    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
     
    <xsl:template match="/">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Test</title>
     
    </head>
    <body bgcolor="#FFFFFF">
     
    <div class="Titre" style="position:absolute; width:500px">
    	Titre trouvé : <xsl:value-of select= "//r[@cible='ok']/text()"/>
    </div>
     
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Pour répondre à la question, les prédicats peuvent porter sur n'importe quoi, pas seulement sur les attributs.

    Mais, pour rechercher le texte Destination, si tu ne l'identifies pas avec l'attribut @cible de la balise <r> qui le contient, alors, tu l'identifies avec quoi ?
    Réponds à cette question, et tu connaîtras l'expression xPath à utiliser. Probablement pas un prédicat.

    En admettant que ce soit le fils <r> de toute balise elle-même <r> et enfant de <enregistrements>, alors il te faut ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select= "//enregistrements/r/r/text()"/>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Merci beaucoup thelvin,

    En fait, pour répondre à ta question, je souhaite utiliser comme identifiant de requête xPath le texte "Destination" lui-même; ce qui me permet, par la suite, de traiter les balises enfant correspondantes -> ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <album titre="Le jour se lève">
    	<auteur>Dess</auteur>
    	<année>1990</année>
    </album>
    A ce propos, j'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select= "//r[text()='Destination']/text()"/>
    Mais ça, il ne comprend pas -> Je ne sais plus comment faire !

    Quelqu'un aurait une idée ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par souffle56 Voir le message
    Mais ça, il ne comprend pas -> Je ne sais plus comment faire !
    Il le comprend parfaitement, seulement, ce que ça fait n'est pas ce que tu veux obtenir.

    Le nœud texte sélectionné contient de l'indentation à la fin de 'Destination', il n'est donc pas égal à 'Destination'.

    Essaie normalize-space(text()) à la place.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Bon alors là, super ok !
    Merci beaucoup thelvin, c'est exactement ça... Effectivement, si je mets:
    <xsl:value-of select= "//r[normalize-space(text())='Destination']/text()"/>
    Là, il trouve vraiment l'identifiant recherché, et en plus, il l'affiche... Vraiment super !
    Bon allez, si t'y vois pas d'inconvénient, du coup, j't'en offre une petite !
    A une prochaine !

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

Discussions similaires

  1. SWF charge un XML sur un autre serveur = BUG
    Par shawee dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 20/09/2009, 11h22
  2. Réponses: 1
    Dernier message: 24/07/2009, 02h59
  3. Requête SQL sur le résultat d'une autre requête
    Par rec82 dans le forum Bases de données
    Réponses: 10
    Dernier message: 12/12/2008, 17h40
  4. [AJAX] probleme appelle page XML sur autre serveur
    Par ldcarpathes dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/08/2006, 18h35

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