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 :

Comparer la valeur d'un attribut avec tous les autres


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre actif
    Avatar de VforVincent
    Homme Profil pro
    Doctorant (EPUB 3.0)
    Inscrit en
    Avril 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant (EPUB 3.0)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 115
    Points : 265
    Points
    265
    Par défaut Comparer la valeur d'un attribut avec tous les autres
    Bonjour tout le monde,

    Je suis en réflexion sur la faisabilité d'une feuille XSLT permettant de comparer la valeur d'un attribut par rapport à tous les autres.

    Si la valeur est utilisé par un autre élément, avant ou après, un message indiquant la valeur est généré en sortie (il s'agit juste d'un contrôle).

    Je pensais faire ça avec un call-template (il va donc falloir que je me documente, je ne l'ai jamais utilisé).

    Pensez-vous que ce soit possible ? Et avec quels moyens ?

    "The power of the Web is in its universality.
    Access by everyone regardless of disability is an essential aspect."

    Tim Berners-Lee, W3C Director and inventor of the World Wide Web

  2. #2
    Membre actif
    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
    Points : 297
    Points
    297
    Par défaut
    si tu met tous les attributs dans une variable et que tu fais ensuite un test de comparaison variable/attribut qui t'interresse, cela suffit-il ?
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    C'est possible, de la même manière qu'on fait tout le reste en XSLT. Je ne vois pas quelle est la question, ou plus exactement, qu'est-ce qui dérange quand on essaie de le faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre actif
    Avatar de VforVincent
    Homme Profil pro
    Doctorant (EPUB 3.0)
    Inscrit en
    Avril 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Doctorant (EPUB 3.0)
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 115
    Points : 265
    Points
    265
    Par défaut
    Supposons que le code suivant est en XML (au pire en XHTML), et observons les attributs dans <LI> :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <H2 item="3">Bibliographie XML</H2> 
    <UL> 
     
        <LI item="1">  Jean-Christophe Bernadac et François Knab, <I>Construire une application XML</I>, Paris, Eyrolles, 1999</LI> 
        <LI item="2">  Alain Michard, <I>XML, Langage et Applications</I>, Paris, Eyrolles, 1998 </LI> 
        <LI item="3>  William J. Pardi, <I>XML en Action</I>, Paris, Microsoft Press, 1999, adapté de l'anglais par James Guerin</LI>
     
    </UL>
    Ce que j'aimerais, c'est comparer l'attribut @item de <H2> avec tous les @item des éléments <LI>. S'il n'y a pas de correspondance ==> message d'erreur.

    C'est marrant, mais maintenant que j'ai exposé mon problème, je le trouve nettement moins compliqué...

    "The power of the Web is in its universality.
    Access by everyone regardless of disability is an essential aspect."

    Tim Berners-Lee, W3C Director and inventor of the World Wide Web

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par VforVincent Voir le message
    C'est marrant, mais maintenant que j'ai exposé mon problème, je le trouve nettement moins compliqué...
    Il n'y a rien d'étrange à cela, c'est le pouvoir de l'analyse humaine.
    Résoudre un problème peut se faire de nombreuses manières, mais ce qui très puissant, c'est d'avancer dans son analyse, sans jamais perdre ce qu'on a déjà fait.
    Autrement dit, de passer par des étapes concrètes, qui une fois qu'elles existent, peuvent être écrites sur papier, et ce qui est écrit sur papier peut être photographié par le cerveau et retenu comme une chose acquise, qui ne fait plus partie du problème mais de sa solution.

    L'énoncé du problème est une telle chose concrète. En informatique on ne peut pas énoncer grand-chose sans exemple, donc l'exemple en fait partie. C'est pour ça qu'on se simplifie beaucoup la vie si on commence par s'expliquer les choses à soi-même. Assez souvent cette première étape est aussi la dernière, parce qu'elle met à jour que la solution est évidente.
    Hélas, il ne semble pas naturel de s'expliquer les choses à soi-même, raison pour laquelle on ne le fait qu'au moment de l'expliquer à d'autres gens, et ce n'est qu'à ce moment-là qu'on se rend compte de la trivialité de la tâche.

    Pourtant ce n'est pas suffisant, pas assez concret. Voilà ce qui l'aurait été :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <DIV>
      <H2 item="3">Bibliographie XML</H2> 
      <UL> 
        <LI item="1">  Jean-Christophe Bernadac et François Knab, <I>Construire une application XML</I>, Paris, Eyrolles, 1999</LI> 
        <LI item="2">  Alain Michard, <I>XML, Langage et Applications</I>, Paris, Eyrolles, 1998 </LI> 
        <LI item="3>  William J. Pardi, <I>XML en Action</I>, Paris, Microsoft Press, 1999, adapté de l'anglais par James Guerin</LI>
      </UL>
    </DIV>
    Et lorsque je traite le DIV, si l'un des LI a le même attribut @item que le H2, je veux afficher un message d'erreur. Comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="DIV">
      <xsl:if test="il_y_a_un_item_commun">
        <error>Erreur : item commun</error>
      </xsl:if>
      <!-- Reste du traitement du div -->
    </xsl:template>
    et je me demande quoi mettre à la place de il_y_a_un_item_commun.

    Et voilà, selon le mécanisme que j'ai explicité au-dessus, poser la question aussi clairement que ça, rend sa réponse absolument évidente.
    Je te laisse nous la donner.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/02/2014, 16h09
  2. Obtenir la valeur d'un attribut avec des balises imbriquées
    Par qdaemon_fr dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 07/12/2013, 15h23
  3. Réponses: 1
    Dernier message: 15/11/2012, 10h41
  4. Réponses: 10
    Dernier message: 13/07/2012, 09h39
  5. Comment changer la valeur d'un attribut avec une stylesheet?
    Par BugsBunny dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/06/2006, 18h18

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