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]Copier un noeud parent


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut [XSLT]Copier un noeud parent
    Bonjour,

    Dans le cadre de mon travail, je génère un fichier xml grâce à la tache cvslog de Ant. Je souhaite y appliquer un filtre et générer un rendu html.

    Pour cela, j'utilise XSLT 1.0. J'ai écrit une fonction, dans mon xslt, qui récupère le filtre depuis Ant et vérifie si dans la balise <msg> j'ai ce filtre. Si le filtre y est, je souhaite copier tout le noeud parent et ses fils.

    Le problème, c'est que lorsque je copie le noeud parent, j'ai un très jolie stackOverFlow dans mon Ant...

    Voici ma fonction XSLT :

    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
     
    <xsl:template name="filter">
    		<xsl:param name="message" select="0"/>
    		<xsl:value-of select="$message"/>
    		<xsl:choose>
    			<xsl:when test="contains($message, $filters)">
    				<xsl:copy>
    					<xsl:apply-templates select="parent::entry"/>
    				</xsl:copy>
    				<xsl:apply-templates select="date"/>
    			</xsl:when>
    			<xsl:otherwise>
    				<xsl:text></xsl:text>
    			</xsl:otherwise>
    		</xsl:choose>
    	</xsl:template>
    Voici un bout de XML sans le noeud racine (<changelog>)

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <entry>
      <date>2009-10-06</date> 
      <time>11:11</time> 
    - <author>
    - <![CDATA[ dev1
      ]]> 
      </author>
    - <file>
    - <name>
    - <![CDATA[ test/Bootstrapper.php
      ]]> 
      </name>
      <revision>1.1.2.1</revision> 
      </file>
    - <file>
    - <name>
    - <![CDATA[ test/setupTest.php
      ]]> 
      </name>
      <revision>1.1.2.1</revision> 
      </file>
    - <file>
    - <name>
    - <![CDATA[ test/adresse/AdresseTest.php
      ]]> 
      </name>
      <revision>1.1.2.1</revision> 
      </file>
    - <file>
    - <name>
    - <![CDATA[ test/adresse/AdresseTransformerTest.php
      ]]> 
      </name>
      <revision>1.1.2.1</revision> 
      </file>
    - <msg>
    - <![CDATA[mise en place de test unitaire
      ]]> 
      </msg>
      </entry>
    Est-ce que quelqu'un aurait une idée qui pourrait me mettre sur une piste ? J'avoue être complètement bloqué, étant novice confirmé sur ces technos là (Ant\XSLT).

    Merci d'avance.

    Cordialement,
    jlnikko

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je souhaite copier tout le noeud parent et ses fils.
    pourquoi ne pas faire un xsl:copy-of pour ceci ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 20
    Points : 22
    Points
    22
    Par défaut
    Bonjour Erwy,

    Merci pour ta réponse. En effet, comme j'ai précisé dans mon post précédant, je suis quasi néophyte en XSLT.

    J'espère que ta solution me retirera le stackOverFlow que j'ai...

    Merci pour ta solution, je reviens vers toi pour te dire ce qu'il en est.

    Cordialement,
    jlnikko

    Edit : Merci beaucoup. Ta solution fonctionne parfaitement

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

Discussions similaires

  1. [XSLT] Copier un noeud avec ces éléments sauf un
    Par DelphLaga dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 12/10/2006, 13h55
  2. [XSLT]copier un noeud en changeant son nom
    Par damyrid dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/03/2006, 11h54
  3. [XSLT] Test égalité noeuds différents
    Par bruno782 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 24/10/2005, 20h58
  4. [XSLT] enfants du noeud racine
    Par CandS dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 24/08/2005, 09h45
  5. [JTree]noeud parent dans un jtree
    Par wassimb dans le forum Composants
    Réponses: 5
    Dernier message: 22/03/2004, 14h06

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