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] xml plat à xml arborescent


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par enigma
    J'ai compris l'utilisation de la variable, la première utilisation de normalize-space et le reste sauf le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select="fmp:CalculAction01[normalize-space(.) != '']
    Qu'est-ce que cela signifie ? Que l'on sélectionne tous les noeuds courants différents de 0 caractères en supprimant les espaces inutiles ?
    C'est exactement cela. Le noeud courant en l'occurence est le CalculAction01 en cours d'évaluation dans l'expression XPath.

    Citation Envoyé par enigma
    Pourrais-tu aussi m'expliquer ce que fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="following-sibling::fmp:ROW[fmp:Code_Parent = current()/fmp:ID_Tache]"/>
    Current() est une fonction XPath qui renvoie le noeud courant, pas le noeud courant à cette étape de l'expression XPath, mais le noeud courant avant l'évaluation de l'expression elle-même. Ce que signifie littéralement cette expression est :
    en partant du noeud courant (un ROW, appelons le ROW1), trouve-moi, parmi ses éléments frères, le ROW dont le fils Code_Parent est égal au fils ID_TACHE de ROW1 (ROW1 étant le résultat de current())".
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Par défaut
    Merci beuacoup pour les explications

    - Qu'est ce qui fait que la récursivité fonctionne ici, je n'arrive pas à trouver le truc.

    - Par ailleurs, je ne comprends pas pourquoi il ne m'affiche pas le contenu de la balise perimetre quand une balise, acces par exemple, est vide. Alors que dans le code on trouve "or" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="normalize-space(fmp:CalculAccess) != '' or normalize-space(fmp:CalculImpact) != '' or normalize-space(fmp:CalculEntree) != '' or normalize-space(fmp:CalculSortie) != ''">
    Merci

  3. #3
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Citation Envoyé par enigma
    - Qu'est ce qui fait que la récursivité fonctionne ici, je n'arrive pas à trouver le truc.
    la ligne dont j'ai expliqué le fonctionnement dans le post précédent se trouve dans un template. Or, elle appelle le même template (pour un ROW différent, bien sûr), c'est là que se niche la récursivité. Si tu remplaces le terme "template" par "fonction", "apply-templates" par un appel de la même fonction, cela sera peut-être plus clair pour toi.
    Citation Envoyé par enigma
    - Par ailleurs, je ne comprends pas pourquoi il ne m'affiche pas le contenu de la balise perimetre quand une balise, acces par exemple, est vide. Alors que dans le code on trouve "or" :
    Il me semblait que ça fonctionnait... tu peux donner l'extrait du XML qui ne passe pas ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Par défaut
    Effectivement, ça fonctionnait très bien avec un xml qui avait un <acces>, <impact>, <entree>, <sortie> renseignés mais avec un xml qui n'a qu'un acces renseigné par exemple, la balise <perimetre> saute.
    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <Tache_atomique ID="ENR13" Type="Atomique">
      <Nom>T01.1.1.2 [Configurer].</Nom> 
      <Procedure>
          <Action>A22 [Appuyer].</Action> 
          <Action>A23 [traduction].</Action> 
          <Action>A08 [Appuyer].</Action> 
      </Procedure>
    </Tache_atomique>
    Je ne comprends pas pourquoi, alors que on a bien un "or" dans le xsl ...

    Merci bcp.
    Vincent

  5. #5
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    C'est une erreur sur le nom de la balise :
    <xsl:if test="normalize-space(fmp:CalculAccess) != '' or normalize-space(fmp:CalculImpact) != '' or normalize-space(fmp:CalculEntree) != '' or normalize-space(fmp:CalculSortie) != ''">
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. [XSLT] Regroupement et imbrication hierarchique d'un fichier Xml Plat
    Par Yann F-FLYC dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/10/2014, 17h32
  2. [XSLT 2] Plat -> XML : Content is not allowed in prolog.
    Par davedenice dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/05/2009, 15h40
  3. [XML][XSLT] transformer le xml en binaire via une xslt
    Par chama dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/07/2005, 11h42
  4. [XSLT] transformation XHTML->XML
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 23/05/2005, 13h15
  5. [XSLT] XML vers XML
    Par ren0 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/10/2004, 12h54

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