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] Source du xsl:template parent


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut [XSLT] Source du xsl:template parent
    Bonjour a tous,
    je génére des fichiers xslt automatiquement à partir d'un fichier de mapping xml.
    Cette génération se passe bien dans la plupart des cas sauf dans le cas particulier ou je rencontre des inversion de structure, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Source : */books/book/author
    Target  : */author/books/book
    voilà ce que je parviens à générer pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template match="author">
    	<xsl:variable name="books" select="*/books[book/author=current()"/>
    	<xsl:apply-templates select="$books"/>
    </xsl:template>
    ici, pas de problème ça fonctionne, si un author a écrit un livre il aura la liste de tout les livres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:template match="books">
    	<xsl:variable name="book" select="*/books/book[author=current()/book/author"/>
    	<xsl:apply-templates select="$book"/>
    </xsl:template>
    par contre là ça pèche, le problème c'est que tout les auteurs sont valides selon cette condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="book">
    	...
    </xsl:template>
    Je pourrais très facilement corriger cela à la main en supprimant le premier template "books" qui est tout à fait inutile on s'en rend compte, mais au niveau de la génération automatique ceci n'est pas détéctable.

    Pour l'instant la seule solution qui me vient à l'esprit c'est de passer l'"author" en paramètre à tout les templates.... mais c'est loin d'être simple au niveau de mon code....

    Si quelqu'un connaît une façon de savoir dans quel Author on se trouve à ce moment là, c'est à dire, remonter d'un niveau dans mes templates et de trouver l'élément courant, cela pourrait grandement m'aider.

    Merci d'avance pour votre temps et aide.

  2. #2
    Membre expérimenté Avatar de aDamas
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2004
    Messages : 260
    Par défaut
    Ok, j'ai pu résoudre mon problème, je pense que le problème était un peu dur à comprendre, merci quand même pour ceux qui l'ont lu jusqu'au bout.
    Et évidemment c'est la seul façon de récupérer l'élément courant du template parent, en lui passant une variable

    Voilà ma solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:template match="author">
      <xsl:apply-templates select="*/books[book/author=current()]">
        <xsl:with-param name="author" select="current()"/>
      </xsl:apply-temlates>
    </xsl:template>
     
    <xsl:template match="books">
      <xsl:param name="autor"/>
      <xsl:apply-templates select="*/books/book[author=$author]"/> 
    </xsl:template>
     
    <xsl:template match="book">
       <xsl:comment>affichage du livre</xsl:comment>
    </xsl:template>

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

Discussions similaires

  1. XSLT test sur xsl:template
    Par Pelote2012 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 11/12/2014, 15h19
  2. [XSLT] utilisation de <xsl:call-template>/compteur xsl
    Par ogn dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 05/02/2008, 10h22
  3. [XSLT] colorer le <xsl:number>
    Par Floyd dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/10/2005, 18h01
  4. [XSLT] Différence entre apply-templates et call-template
    Par Cpt.FLAM dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/04/2005, 18h47
  5. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57

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