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 :

selectionner les mesures du dernier formulaire d'un patient [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    DPO/Datamanager
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DPO/Datamanager

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut selectionner les mesures du dernier formulaire d'un patient
    Bonjour,

    J'ai besoins d'aide car je tourne en rond sur un problème.

    J'ai le xml suivant (c'est un exemple):
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    <racine>
       <Inclusion>
          <entete>
              <idPat>123</idPat>
              <dateForm>2011-01-28</dateForm>
          </entete>
          <visites>
             <visite>
                <poids>25</poids>
                <taille>100</taille>
             </visite>
             <visite>
                <poids>30</poids>
                <taille>110</taille>
             </visite>
          </visites>
       </Inclusion>
       <Inclusion>
          <entete>
              <idPat>456</idPat>
              <dateForm>2011-02-28</dateForm>
          </entete>
          <visites>
             <visite>
                <poids>25</poids>
                <taille>100</taille>
             </visite>
             <visite>
                <poids>30</poids>
                <taille>110</taille>
             </visite>
          </visites>
       </Inclusion>
       <Suivi>
          <entete>
              <idPat>123</idPat>
              <dateForm>2013-01-28</dateForm>
          </entete>
          <visites>
             <visite>
                <poids>25</poids>
                <taille>100</taille>
             </visite>
             <visite>
                <poids>30</poids>
                <taille>110</taille>
             </visite>
          </visites>
       </Suivi>
       <Suivi>
          <entete>
              <idPat>123</idPat>
              <dateForm>2012-01-28</dateForm>
          </entete>
          <visites>
             <visite>
                <poids>35</poids>
                <taille>115</taille>
             </visite>
             <visite>
                <poids>40</poids>
                <taille>120</taille>
             </visite>
          </visites>
       </Suivi>
       <Suivi>
          <entete>
              <idPat>456</idPat>
              <dateForm>2013-01-28</dateForm>
          </entete>
          <visites>
             <visite>
                <poids>25</poids>
                <taille>100</taille>
             </visite>
             <visite>
                <poids>30</poids>
                <taille>110</taille>
             </visite>
          </visites>
       </Suivi>
    </racine>
    Au final je souhaiterai récupérer les visites du dernier formulaire (date la plus grande) pour chaque patient ce qui donnerai:
    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
     
    </racine>
       <Suivi>
          <entete>
              <idPat>123</idPat>
              <dateForm>2013-01-28</dateForm>
          </entete>
          <visites>
             <visite>
                <poids>25</poids>
                <taille>100</taille>
             </visite>
             <visite>
                <poids>30</poids>
                <taille>110</taille>
             </visite>
          </visites>
       </Suivi>
       <Suivi>
          <entete>
              <idPat>456</idPat>
              <dateForm>2013-01-28</dateForm>
          </entete>
          <visites>
             <visite>
                <poids>25</poids>
                <taille>100</taille>
             </visite>
             <visite>
                <poids>30</poids>
                <taille>110</taille>
             </visite>
          </visites>
       </Suivi>
    Pourriez-vous m'aider?

    D'avance merci à tous.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Par défaut
    dans cet ordre d'idée

    (méthode Muench)

    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
     
    <xsl:key name="id" match="entete" use="idPat"/> 
     
    <xsl:template match="/">
             <xsl:for-each select="//entete[generate-id()=generate-id(key('id', idPat)[1])]">
            <xsl:for-each select="key('id', current()/idPat)">
             <xsl:sort select="substring(dateForm,1,4)" data-type="number" order="descending" />
     
             <xsl:if test="position()=1">
                   <xsl:value-of select="idPat"/> - <xsl:value-of select="dateForm"/> - <xsl:value-of select="../visites/visite/poids"/> kg<br/>
             </xsl:if>
           </xsl:for-each>
    </xsl:for-each>
     
    </xsl:template>
    résultat :
    123 - 2013-01-28 - 25 kg
    456 - 2013-01-28 - 25 kg


    Bon là c'est trié que sur l'année, à faire pareil pour mois et jour (je ne pense pas que l'on puisse directement trier avec la date "complète")

    Peut-être qu'il existe une manière plus propre/simple de le faire cependant...

  3. #3
    Membre averti
    Homme Profil pro
    DPO/Datamanager
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DPO/Datamanager

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut merci
    Bonjour,

    Merci pour cette réponse rapide. Je teste cela Lundi et je te tiens au courant.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par caballo Voir le message
    Bon là c'est trié que sur l'année, à faire pareil pour mois et jour (je ne pense pas que l'on puisse directement trier avec la date "complète")
    Pourtant c'est un peu le principe des dates format ISO, hein -_-°...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Par défaut
    oups... ha oui exact

    bon après c'était vendredi après midi aussi...

    Citation Envoyé par thelvin Voir le message
    Pourtant c'est un peu le principe des dates format ISO, hein -_-°...

  6. #6
    Membre averti
    Homme Profil pro
    DPO/Datamanager
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : DPO/Datamanager

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut
    Merci pour le bout de code. Cela fonctionne à quelques adaptations près liés à mon xml source.

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

Discussions similaires

  1. Selectionner tout les champs d'un formulaire dans un element
    Par berlo44 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 26/06/2011, 11h59
  2. Réponses: 8
    Dernier message: 22/04/2009, 14h44
  3. Réponses: 4
    Dernier message: 18/10/2008, 00h25
  4. créer une requête qui selectionne les 10 derniers enregistrements
    Par kuhnden dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/04/2007, 16h13
  5. Vider les champs d'un formulaire une fois ce dernier validé
    Par Silveur dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/03/2007, 08h58

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