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]position d'un element de valeur specifique


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut [XSLT]position d'un element de valeur specifique
    bonjour a tous

    voici un extrait de mon fichier xml :

    <ListOfChoice menuname="...">
    <ErrorObjectID>...</ErrorObjectID>
    <ServiceID>...</ServiceID>
    <PromptID>...</PromptID>
    <IconID>...</IconID>
    <DefaultObjectIndex>CCC</DefaultObjectIndex>
    <ScreenID>...</ScreenID>
    <MenuLeaf>AAA</MenuLeaf>
    <MenuLeaf>BBB</MenuLeaf>
    <MenuLeaf>CCC</MenuLeaf>
    <ListOfChoice menuname="DDD">
    ...
    </ListOfChoice>
    <MenuLeaf>EEE</MenuLeaf>
    </ListOfChoice>

    dans un feuille xslt, je veux afficher la position de la MenuLeaf ou de la ListOfChoice ayant pour valeur la valeur de DefaultObjectIndex (dans l'exemple ci-dessus, il me faut afficher 4)

    je pensais le faire en creant appelant un template et en passant en parametres la valeur de DefaultObjectIndex et la liste des MenusLeaf et ListOfChoice.... mais les variables sont statiques en xml !

    quelqu'un aurait-il une idee ? merci !

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    Essaye ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <xsl:template match="ListOfChoice">
       ...
       <xsl:variable name="value">
          <xsl:value-of select="DefaultObjectIndex"/>
       </xsl:variable>
       <xsl:value-of select="position(*[(name()='MenuLeaf' or name()='ListOfChoice') and text()=$value])"/>
       ...
    </xsl:template>
    "La violence est le dernier refuge de l'incompétence." --- Isaac Asimov ---

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    y avait de l'idée
    mais la fonction position() ne prend pas d'argument ! un alternatif ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    dans ce cas, essaye de la mettre à la fin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:value-of select="*[(name()='MenuLeaf' or name()='ListOfChoice') and text()=$value]/position()"/>
    [/code]
    "La violence est le dernier refuge de l'incompétence." --- Isaac Asimov ---

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    ça ne fonctionne pas non plus
    en plus, pour les MenuLeaf, text()=$value ça va... mais pour les ListOfChoice il faudrait @menuname=$value !

    en tout cas je n'ai toujours pas trouvé !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
     
    <xsl:template match="/ListOfChoice"> 
       <xsl:variable name="value"> 
          <xsl:value-of select="DefaultObjectIndex"/> 
       </xsl:variable> 
       <xsl:apply-templates select="MenuLeaf |ListOfChoice">
          <xsl:with-param name="value" select="$value"/>
       </xsl:apply-templates>
    </xsl:template> 
     
    <xsl:template match="MenuLeaf | ListOfChoice">
       <xsl:param name="value"/>
       <xsl:if test="(name()='MenuLeaf' and text()=$value) or (name()='ListOfChoice' and @menuname=$value)">
          <xsl:value-of select="position()"/>
       </xsl:if>
    </xsl:template>
     
    </xsl:stylesheet>
    j'ai bataillé longtemps, mais finalement :trouve: .

    J'espère tout de même qu'il existe une solution plus facile, donc le sujet reste ouvert...
    Avis aux cinglés de XSL!

    A+
    "La violence est le dernier refuge de l'incompétence." --- Isaac Asimov ---

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    YES ! un grand merci à toi leon !

    a+

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

Discussions similaires

  1. Comment faire afficher la position d'un element dans un tableau
    Par IDE dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/11/2006, 12h44
  2. Réponses: 3
    Dernier message: 20/09/2006, 16h48
  3. [XSLT][>XML] changer un élément
    Par zserdtfg dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 04/09/2006, 09h03
  4. [XSLT] Position last
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/03/2005, 10h57

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