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 :

utilisation de xsl:count dans un arbre à 3 noeuds


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut utilisation de xsl:count dans un arbre à 3 noeuds
    Bonjour, voici mon problème :

    Je veux compter le nombre "d'échantillons" qui comporte au moins un "paramètre" contenant une balise à la valeur XXX.

    Je vous présente mon arbre xml :arbreXML.xml

    Je sais compter ceci :
    (le nombre de parametre avec rc_REFQUAL à une valeur donnée)
    <xsl:value-of select="count(ares_ftra/feuille_travail/parametres/parametre/caract[rc_REFQUAL = 'TOTO'])"/>

    Je sais également compter le nombre d'échantillons :
    <xsl:value-of select="count(ares_ftra/feuille_travail/demandes/demande/fiche/echantillon)"/>
    ou comme ceci : (résultat plus plaisant)
    <xsl:value-of select="count(ares_ftra/feuille_travail/cellules/cellule[generate-id() = generate-id(key('i_noech', noech)[1])"/>

    Maintenant je veux compter le nombre d'échantillons différents qui comporte au moins un paramètre dont rc_REFQUAL = 'TOTO'...

    Pouvez vous m'aider?

    le lien que j'aimerais faire et qui vous manquait peut être :
    parametres/parametre/caract/idcartec = cellules/cellule/prescription/idcartec

    Merci à celui ou celle qui pourra m'aider...

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    tu as un fichier xml d'exemple

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Oui, j'avais bien joint un fichier xml d'exemple ....

    le revoici :

    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <ares_ftra>
      <feuille_travail num="1">
        <noftrav>200800000130</noftrav>
        <demandes>
          <demande num="1">
            <nodem>47751</nodem>
            <fiche num="1">
              <nofiprlv>52305</nofiprlv>
              <nodem>47751</nodem>
              <echantillon num="1">
                <noech>300005260948</noech>
                <nofiprlv>52305</nofiprlv>
              </echantillon>
            </fiche>
          </demande>
          <demande num="1">
            <nodem>47843</nodem>
            <fiche num="1">
              <nofiprlv>52419</nofiprlv>
              <nodem>47843</nodem>
              <echantillon num="1">
                <noech>300005262447</noech>
                <nofiprlv>52419</nofiprlv>
              </echantillon>
            </fiche>
          </demande>
        </demandes>
        <parametres>
          <parametre num="1">
            <idelana>100000010236</idelana>
            <caract num="1">
              <idcartec>100000029678</idcartec>
              <rc_REFQUAL/>
            </caract>
          </parametre>
          <parametre num="1">
            <idelana>100000010282</idelana>
            <caract num="1">
              <idcartec>100000031043</idcartec>
              <rc_REFQUAL>TOTO</rc_REFQUAL>
            </caract>
          </parametre>
          <parametre num="1">
            <idelana>100000010243</idelana>
            <caract num="1">
              <idcartec>100000029685</idcartec>
              <rc_REFQUAL/>
            </caract>
          </parametre>
        </parametres>
        <cellules>
          <cellule num="1">
            <nodem>47751</nodem>
            <nofiprlv>52305</nofiprlv>
            <noech>300005260948</noech>
            <prescription num="1">
              <idelana>100000010243</idelana>
              <idcartec>100000029685</idcartec>
            </prescription>
          </cellule>
          <cellule num="1">
            <nodem>47751</nodem>
            <nofiprlv>52305</nofiprlv>
            <noech>300005260948</noech>
            <prescription num="1">
              <idelana>100000010282</idelana>
              <idcartec>100000031043</idcartec>
            </prescription>
          </cellule>
          <cellule num="1">
            <nodem>47843</nodem>
            <nofiprlv>52419</nofiprlv>
            <noech>300005262447</noech>
            <prescription num="1">
              <idelana>100000010236</idelana>
              <idcartec>100000029678</idcartec>
            </prescription>
          </cellule>
        </cellules>
      </feuille_travail>
    </ares_ftra>
    Merci de t'intéresser à mon cas.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    J'ai résolu mon problème :

    j'ai déclaré deux templates différents :
    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
    	<xsl:template  name="TousEchant">
    		<xsl:param name="listeEchantillon"> 0 </xsl:param>
    		<xsl:choose>
    			<xsl:when test="$listeEchantillon">
    				<xsl:variable name="noech" select="$listeEchantillon[last()]/noech" />
    				<xsl:variable name="dernierEch"> 
    					<xsl:call-template name="ParEchant">
    						<xsl:with-param name="listePrescription" select="/ares_ftra/feuille_travail/cellules/cellule/prescription[../noech=$noech]"/>
    					</xsl:call-template>
    				</xsl:variable>
    				<xsl:variable name="autresEch"> 
    					<xsl:call-template name="TousEchant">
    						<xsl:with-param name="listeEchantillon" select="$listeEchantillon[position() != last()]"/>
    					</xsl:call-template>
    				</xsl:variable>
    				<xsl:value-of select="$dernierEch + $autresEch"/>
    			</xsl:when>
    			<xsl:otherwise>0</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
    et
    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
     
    	<xsl:template  name="ParEchant">
    		<xsl:param name="listePrescription"> 0 </xsl:param>
    		<xsl:choose>
    			<xsl:when test="$listePrescription">
    				<xsl:variable name="vIdcartec"> <xsl:value-of select="$listePrescription[last()]/idcartec"/>	</xsl:variable>
    				<xsl:variable name="dernier"> 
    					<xsl:choose>
    						<xsl:when test="/ares_ftra/feuille_travail/parametres/parametre/caract[idcartec = $vIdcartec]/rc_REFQUAL = 'TOTO'"> 1</xsl:when>
    						<xsl:otherwise>0</xsl:otherwise>
    					</xsl:choose>
    				</xsl:variable>
    				<xsl:variable name="lesautres"> 
    					<xsl:call-template name="ParEchant">
    						<xsl:with-param name="listePrescription" select="$listePrescription[position() != last()]"/>
    					</xsl:call-template>
    				</xsl:variable>
    				<xsl:value-of select="$dernier + $lesautres"/>
    			</xsl:when>
    			<xsl:otherwise>0</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
    J'appelle le premier template par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		<p class="MsoNormal" align="center" >Nombre d'échantillons comportant un paramètre Chromato : 
    			<xsl:call-template name="TousEchant">
    				<xsl:with-param name="listeEchantillon" select="demandes/demande/fiche/echantillon"/>
    			</xsl:call-template>*	
    		</p>
    Mais je suis sur de ne pas avoir un code optimisé : deux templates récursif dont un qui appell l'autre...et tout ça pour me donner uniquement un total ...

    Quelques bonnes fées pourrainet elles se pencher sur mon berceau ?

    Merci par avance.

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

Discussions similaires

  1. Utilisation de COUNT() dans une requete avec 3 table
    Par chych dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/06/2010, 11h54
  2. comment utiliser SELECT COUNT dans ma fonction
    Par z_ahlam dans le forum Langage
    Réponses: 2
    Dernier message: 14/10/2009, 16h30
  3. [XSL] Utiliser une variable PHP dans XSL
    Par mabedan dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 13/08/2007, 15h25
  4. Réponses: 2
    Dernier message: 20/12/2006, 16h12
  5. utiliser une XSL dans une JSP
    Par miloux32 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/07/2006, 09h53

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