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 :

Problème de compréhension d'une expression


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Points : 13
    Points
    13
    Par défaut Problème de compréhension d'une expression
    Bonjour à tous.

    J'assure la maintenance d'une appli qui gére ses données d'entrée via fichier xml et conversion de model via xsl.

    L'arborescence de mon fichier d'entrée est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <GENERAL>
       ...
       <CODETARIF>monTarif</CODETARIF>
       ...
    </GENERAL>
    <RENSEIGNEMENTS>
     ...
    </RENSEIGNEMENTS>
    Et dans mon fichier xsl, j'ai ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:template match="RENSEIGNEMENTS[../GENERAL/CODETARIF='monTarif']" mode="monMode">
    Je n'arrive pas à comprendre comment fonctionne le code du fichier xsl.

    Je suppose que ca signifie que je suis au niveau de la balise RENSEIGMENTS et que j'applique la template uniquement si je trouve 'monTarif' dans la balise CODETARIF, mais je n'en suis pas sur.

    Si quelqu'un avait l'amabilité de m'expliquer comment ca fonctionne (ou pas)??

    Par avance merci.

    [EDIT]
    Petite précision qui peut avoir son importance:
    les balises GENERAL et RENSEIGNEMENTS sont au même niveau dans mon arborescence.

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2003
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Finalement j'ai trouvé.


    La syntaxe du template est correcte.
    Elle vérifie bien que l'on applique la template uniquement si la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <CODETARIF>monTarif</CODETARIF>
    est présente dans la balise GENERAL.

    C'est le test suivant qui était foireux. On cherchait à tester ce qu'il y avait dans les balise VALEUR des champs 6 et 7
    A l'origine, c'était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:if test="RG[CHAMP='0-CHAMP6']='monLibelle' and count(RG[CHAMP='0-CHAMP7'])&gt;0">
    et en fait, avec le and, les parenthèses sont indispensables.
    Qui plus est, le test sur le champ 7 n'était pas adéquat pour tester un libellé absent.

    Le test correct est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:if test="(RG[CHAMP='0-CHAMP6']/VALEUR='monLibelle') and (not(RG[CHAMP='0-CHAMP7']/VALEUR=''))">

    Pour info, la structure du fichier XML est du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <RG>
      <TAG>monTag</TAG> 
      <CHAMP>0-CHAMP6</CHAMP> 
      <FORM>maForme</FORM> 
      <VALEUR>maValeur</VALEUR> 
    </RG>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/09/2008, 11h16
  2. Petit problème de compréhension d'une ligne de code
    Par totoc1001 dans le forum Images
    Réponses: 3
    Dernier message: 12/03/2007, 21h44
  3. Problème de compréhension d'une classe
    Par goldorax113 dans le forum Langage
    Réponses: 5
    Dernier message: 25/10/2006, 22h50
  4. Réponses: 5
    Dernier message: 31/08/2006, 13h34
  5. Réponses: 6
    Dernier message: 17/08/2005, 12h38

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