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 :

[XPath]récupération de données


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut [XPath]récupération de données
    Bonjour,
    J'ai un xml genre
    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
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <test descr="test" doctorEmail="ff@mail.com">
        <thedestinataire label="médecin" newline="1" style="txt"
            title="0 ">medPrincipal XXX 123456 rue XXX</thedestinataire>
        <copie label="Copie" newline="1" style="txt" title="0 ">
            <entry>med1 XXX 12345 Rue blabla</entry>
            <entry>med2 XXX 123654 rue lala</entry>
        </copie>
        <titre1 label="test" style="txt"/>
        <limite1 label="limite" style="txt">01/01/01</limite1>
        <limite2 label="limite" style="txt">02/02/02</limite2>
        <trait label="traitement" style="txt">le traitment étant</trait>
        <motif label="motif admission" style="txt">le motif étant</motif>
    </test>
    ma récupération après avoir lu le tuto ce ferait de la manière 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
    
    <fo:table-row>
     <fo:table-cell>
      <fo:block>
      <!--<xsl:variable name="mavar1" select="*[4]/@label"/>-->
      <xsl:value-of select="limite1/@label"/>
    </fo:block>
    </fo:table-cell>
    <fo:table-cell>
     <fo:block>
      <xsl:value-of select="limite1/child::text()"/>
     </fo:block>
    </fo:table-cell>
    </fo:table-row>
    la variable "mavar1", elle me retourne un résultat tandis que le reste pas j'ai déjà essayé
    - /test/limite1/child::text()
    - /test/limite1/text()
    Mais je n'ai jamais rien dans mes résultats ??

    Est-ce que j'utilise mal Les child::text et @label avec les noms de mes noeuds??

    Merci d'avance

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="limite1"/>

  3. #3
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    est ce que tu es dans un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="test">
    ????

  4. #4
    Membre averti
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut
    Je suis dans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <template match select="/">
    Qui contient un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="child::*[1]">
    ==> *[1] etant la balise <test></test> cette balise sera toujours unique! donc ça peut rester comme ça celle là

  5. #5
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    as tu essayé ce que j ai écris....?

  6. #6
    Membre averti
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut
    Vi mais ça ne donne rien à l'ecran pourtant il contient une valeur

    En fait j'avais déjà posté mais je pensais qu'on avait trouvé la solution
    donc j'avais mis résolu mais je ne sais plus écrire 2 (ou +) éléments sur une même ligne

    Si tu te rappelles bien j'avais

    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:apply template/>
    ....
     
    puis
    <xsl:template match="*">
     <xsl:variable name=name select="name()">
     <xsl:choose>
       <xsl:when test=$name="limite1">
            <xsl:call-template name="jjjj"/>
        </xsl:when>
     
     </xsl:choose>
    </xsl:template>
    Cependant je dois appeler ça dans une row donc il passe une ligne à chaque fois! Donc je voudrais les appeler par leur "identifiant" leur nom de balise

  7. #7
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    juste pour vérifier... dans ton
    <xsl:for-each select="child::*[1]">
    affiche le nom du noeud courant pour vérifier que tu ne te trompes pas de noeud...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je suis ici:<xsl:value-of select="name()"/>

  8. #8
    Membre averti
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut
    La j'ai bien test donc ma tte premiere balise

  9. #9
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    ah ça y est...c était tellement évident que personne ne l a vu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <template match select="/">
    ...et bien c est faux!
    c est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="/">
    ...pfff

  10. #10
    Membre averti
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Par défaut
    Heuuuuu c'est pas si evident que ça pcq en fait c'est ce que j'ai!!
    j'ai pas fait un copier/coller j'ai retapé le code comme ça et j'ai mis un select alors qu'il en fallait pas!

    Désolée! donc c'est po ça

  11. #11
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    je te propose ceci qui est plus clair....


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:template match="/">
    <xsl:apply-templates/>
    </xsl:template>
     
    <xsl:template match="test">
    <xsl:apply-templates/>
    </xsl:template>
     
    <xsl:template match="limite1">
    <xsl:value-of select="@label"/>
    etc...
    <xsl:call-template name="jjjj"/>
    </xsl:template>

    dans le futur, évite au maximum les



  12. #12
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Par défaut
    +1
    Comme je t avais dit Jouly c est beaucoup plus simple en segmentant par template,..
    et comme promis je regarde ça aujourd hui

Discussions similaires

  1. xpath et balise <html>: la lecture des données bloque
    Par damien_55 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 06/05/2011, 19h42
  2. probleme XPath, j'obtiens pas ma données ?
    Par Bruno13 dans le forum Langage
    Réponses: 7
    Dernier message: 02/02/2006, 14h25
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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