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

XML/XSL et SOAP Discussion :

classer numériquement des données


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut classer numériquement des données
    Bonjour,

    Mon intitulé ne doit pas être très explicite, en faite voici mon problème :

    en XML j'ai une liste de Citation.
    Pour chaque Citation j'ai un titre, des auteurs, un éditeur et une date.

    dans mon fichier XSL je dois faire en sorte d'afficher l'éditeur qui a publié le plus de Citation.

    Pour l'instant j'affiche tous les éditeur dans l'ordre alphabétique, moi ça me permet de bien voir qui apparait le plus mais je ne vois pas comment je peux faire pour que l'ordinateur le voit aussi !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <p>
    	Le publieur ayant publier le plus d'oeuvre :
    	<br/>
    	<!-- tri -->
    	<xsl:for-each select="//Citation/@publisher">
    		<xsl:sort select="."/>
    		<xsl:value-of select="."/>
    		<br/>
    	</xsl:for-each>
    </p>
    Parce que si je fais count() forcément ça affiche 1 autant de fois que j'ai d'éditeur ou alors il faudrait faire une sorte de groupBy mais je ne vois pas comment faire en XML/XPATH.

    Merci de votre aide

  2. #2
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Après plusieurs heures de recherches j'ai trouvé !
    alors je partage au cas où d'autres cherchent la même chose plus tard !

    En faite j'étais mal partie.
    Voici un code qui marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Editeur ayant publié le plus d'oeuvre :
      <xsl:for-each select="//Citation[not(@publisher=preceding-sibling::Citation/@publisher)]/@publisher">
        <xsl:sort select="count(//Citation[current() = ./@publisher])" order="descending" data-type="number"/>
          <xsl:if test="position() = 1">
    		Nom : <xsl:value-of select="."/> ,
    		Nombre de publication : <xsl:value-of select="count(//Citation[current() = ./@publisher])"/>
    	</xsl:if>
      </xsl:for-each>

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    C'est bien l'idée et je ne dirais pas que ce ne soit pas une bonne solution. En faite il vaut mieux de la connaître avant de faire des choses un peu plus sophistiquées.

    Je vous porte une alternative pour faire avancer la science.

    D'abord définir une clé à top niveau de xslt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:key name="publisher" match="Citation/@publisher" use="." />
    Et puis le xsl:for-each peut prendre la forme comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:for-each select="//Citation/@publisher[generate-id()=generate-id(key('publisher',.)[1])]">
        <xsl:sort select="count(key('publisher',.))" order="descending" data-type="number"/>
        Nom : <xsl:value-of select="."/> ,
        Nombre de publication : <xsl:value-of select="count(key('publisher',.))"/>
    </xsl:for-each>

Discussions similaires

  1. Lire des données numériques signées
    Par pierre24 dans le forum Administration et Installation
    Réponses: 13
    Dernier message: 18/07/2018, 14h39
  2. Classer des données
    Par Ptinéwik dans le forum MATLAB
    Réponses: 8
    Dernier message: 23/04/2008, 12h16
  3. récuperer des données numériques
    Par jeff10 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2008, 11h16
  4. Réponses: 5
    Dernier message: 04/12/2007, 13h40
  5. Réponses: 4
    Dernier message: 11/09/2006, 13h47

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