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] Dupliquer un élément sans un enfant


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [XSLT] Dupliquer un élément sans un enfant
    Bonjour, je suis assez novice avec xsl et j'essaie de convertir le xml suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Rapports>
      <Rapport id="a">
        <Description>booya</Description>
        <Categorie>cat1</Categorie>
        <Categorie>cat2</Categorie>
        ...
      </Rapport>
      ...
    </Rapports>
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Rapports>
      <Rapport id="a">
        <Description>booya</Description>
        <Categorie>cat1</Categorie>
        ...
      </Rapport>
      <Rapport id="a">
        <Description>booya</Description>
        <Categorie>cat2</Categorie>
        ...
      </Rapport>
      ...
    </Rapports>
    J'ai essayé plusieurs choses, mais je n'arrive jamais à dupliquer tout le Rapport et n'avoir qu'une categorie.

    Quelqu'un peut m'aider?
    Merci,
    Christian

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Je vous conseille de partir des éléments <Categorie> dans une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="//Categorie">
    puis, dedans, de remonter par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="ancestor::Rapport"/>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="ancestor::Rapport/Description"/>

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci Alain, cela m'a vraiment mis sur la bonne piste. Voici ma solution finale :

    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
    21
    	<xsl:template match="@* | node()">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>
     
    	<xsl:template match="Rapport">
    		<xsl:for-each select="Categorie">
    			<xsl:variable name="Categ" select="." />
    			<xsl:for-each select="ancestor::Rapport">
    				<xsl:copy>
    					<xsl:apply-templates select="@*"/>
    					<xsl:for-each select="node()[local-name()!='Categorie'] | Categorie[.=$Categ]">
    						<xsl:copy>
    							<xsl:apply-templates select="@* | node()"/>
    						</xsl:copy>
    					</xsl:for-each>
    				</xsl:copy>
    			</xsl:for-each>
    		</xsl:for-each>
    	</xsl:template>

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

Discussions similaires

  1. [XSLT] Type d'élément courant
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 07/06/2006, 16h50
  2. [XSLT] Récuperer l'élément précedent
    Par Floyd dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/01/2006, 18h22
  3. [XSLT] Réordonner les éléments en sortie
    Par crossword dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/12/2005, 09h37
  4. xsl:Template sur un élément sans namespace
    Par dust45 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/10/2005, 16h52
  5. [xslt] Suppression des éléments sans contenu.
    Par dibbouk dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/06/2005, 17h17

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