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 :

[XSLT]Equivalent XSL du having SQL ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut [XSLT]Equivalent XSL du having SQL ?
    Bonjour,

    J'ai le fichier XML suivant :

    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
     
    <?xml version="1.0"?>
    <database>
        <table id="100">
            <field id="11"/>
            <field id="12"/>
            <field id="13"/>
        </table>
        <table id="200">
            <field id="21"/>
            <field id="22"/>
        </table>
        <table id="300">
            <field id="31"/>
            <field id="32"/>
            <field id="33"/>
            <field id="34"/>
        </table>
    </database>
    Et je voudrais, par exemple, afficher l'id des tables ayant plus de 2 champs.

    Comment dois-je faire ?

    Merci.

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Citation Envoyé par domiq44 Voir le message
    Et je voudrais, par exemple, afficher l'id des tables ayant plus de 2 champs.
    /database/table[count(field)&gt;2]/@id

  3. #3
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Merci, ça me donne ce que je voulais

    Et si je veux afficher, en plus, le count.

    Comment puis-je faire ?

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Citation Envoyé par domiq44 Voir le message
    Merci, ça me donne ce que je voulais

    Et si je veux afficher, en plus, le count.

    Comment puis-je faire ?
    Quel count ?

    le nombre de résultat de la précedent requête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count(/database/table[count(field)&gt;2])
    autre chose ? à préciser

  5. #5
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Merci beaucoup

  6. #6
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Un problème subsiste quand même

    Si je modifie mon XML comme ceci :

    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
     
    <?xml version="1.0"?>
    <database>
    	<pipo>blablabla</pipo>
    	<table id="100">
    		<field id="11"/>
    		<field id="12"/>
    		<field id="13"/>
    	</table>
    	<table id="200">
    		<field id="21">
    			<toto>riri</toto>
    		</field>
    		<field id="22"/>
    	</table>
    	<table id="300">
    		<field id="31"/>
    		<field id="32"/>
    		<field id="33">
    			<toto>fifi</toto>
    		</field>
    		<field id="34"/>
    	</table>
    </database>
    et que j'utilise le XSL suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="text"/>
    	<xsl:template match="/database/table[count(field)&gt;2]">
    table=<xsl:value-of select="@id"/>
    field=<xsl:value-of select="field/@id"/>
    count=<xsl:value-of select="count(field))"/>
    	</xsl:template>
    </xsl:stylesheet>
    j'obtiens le résultat suivant :

    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
     
     
            blablabla
     
    table=100
    field=11
    count=2
     
     
                            riri
     
     
     
     
    table=300
    field=31
    count=2
    Pourquoi toutes ces lignes blanches et "blablabla" et "riri" ?
    Je ne comprends pas pourquoi j'ai ça ?
    Et je ne parviens pas à les éliminer ?

  7. #7
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Veuillez m'excuser pour cette petite relance

    Mais quelqu'un peut-il m'aider

    Merci d'avances.....

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="text"/>
    	<xsl:template match="/">
                      <xsl:apply-templates select="database/table[count(field)&gt;2]">
    	</xsl:template>
    	<xsl:template match="table">
    table=<xsl:value-of select="@id"/>
    field=<xsl:value-of select="field/@id"/>
    count=<xsl:value-of select="count(field))"/>
    	</xsl:template>
    </xsl:stylesheet>

  9. #9
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Merci beaucoup Erwy, ça marche

    Mais pourquoi y a-t-il une defférence quand on passe par un template intermédiaire

  10. #10
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    Le problème ne vient pas de la template intermédiaire mais de l'absence d'apply-templates.
    Pour assurer le parcours de l'arbre XSLT dispose de template par défaut.
    Comme tu avais écris ta feuille tu faisais jouer ces templates par défaut, le changement que j'ai effectué permet de l'eviter

  11. #11
    Membre éclairé Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 302
    Par défaut
    Un grand MERCI pour ton aide Erwy

    Je comprends un peu mieux ce language qui est, il faut le dire, un peu étrange quand même

    Meci encore

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

Discussions similaires

  1. Equivalent de rownum sous SQL server
    Par Isildur dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/07/2009, 15h48
  2. [XSLT] Test xsl:if
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/12/2005, 10h05
  3. [XSLT]L'équivalent XSL de isset (php)
    Par xilay dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 16/11/2005, 10h03
  4. XSLT et XSL-FO
    Par Ethylene dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/10/2005, 09h47

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