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 :

Un exemple de xsl avec xsl:key


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Un exemple de xsl avec xsl:key
    Bonjour tout le monde,
    Je suis débutant en XLM j'essaye de comprendre un exemple de xsl mais j'arrive pas...
    Le fichier xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <ts>
    	<t id="t1">T1</t>
    	<t id="t2" ref="t1">T2</t>
    	<t id="t3" ref="t2">T3</t>
    </ts>

    Le premier xsl:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    	<xsl:key name="key" match="t" use="@id"/>
     
    	<xsl:template match="/|*|text()">
    		<xsl:copy>
    			<xsl:apply-templates select="node()"/>
    		</xsl:copy>
    	</xsl:template>
     
    	<xsl:template match="/t[@ref]">
    		<xsl:copy-of select="key('key',@ref)"/>
    	</xsl:template>
    </xsl:stylesheet>
    il donne le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0"?>
    <ts>
    	<t>T1</t>
    	<t id="t1">T1</t>
    	<t id="t2" ref="t1">T2</t>
    </ts>
    et le seconde xls:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    	<xsl:key name="key" match="t" use="@id"/>
    	<xsl:template match="/|*|text()">
    		<xsl:copy>
    			<xsl:apply-templates select="node()"/>
    		</xsl:copy>
    	</xsl:template>
    	<xsl:template match="t[@ref]">
    		<xsl:apply-templates select="key('key',@ref)"/>
    	</xsl:template>
    </xsl:stylesheet>
    et il donne le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0"?>
    <ts>
    	<t>T1</t>
    	<t>T1</t>
    	<t>T1</t>
    </ts>
    la seule différence entre ces deux xsl c'est le code dans le seconde xsl.apply-templates, mais j'arrive pas à comprendre les résultat sur tout pour
    le deuxième il donne partout des T1...

    Est-ce que quelqu'un peut m'expliquer?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Ben, en faisant apply-templates il retourne récursivement dans les templates, en les appliquant à l'élément désigné par @ref.

    Autrement dit tant que l'élément désigné par @ref a lui-même un @ref, ça va continuer de rappeler les templates,
    jusqu'à ce que tu tombes sur un élément qui ne correspond pas à <xsl:template match="/t[@ref]"> parce qu'il n'a pas de @ref.

    Or <t id="t1">T1</t> est le seul dans ce cas, donc forcément quand on a tout déplié, il ne reste plus que lui.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. XML vers XML avec XSL
    Par guizz79 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2005, 09h43
  3. XML et XSL avec balises prefixees
    Par mamouth2005 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 07/06/2005, 14h36
  4. [XSL]problème avec <xsl:when>
    Par Devil666 dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 27/05/2005, 16h54
  5. Questionnaire à réaliser avec XSL et XML
    Par olive.m dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 19/11/2003, 16h37

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