Bonjour,

j'ai la feuille xsl suivante (merci GrandFather):

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
 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
 
<xsl:template match="/">
	<xsl:apply-templates></xsl:apply-templates>
</xsl:template>
 
<xsl:template match="nom">
  <xsl:variable name="position-dernier" select="count(following-sibling::*[not(self::nom)]) - count(following-sibling::nom/following-sibling::*[not(self::nom)])"/>
  <personne>
    <xsl:copy-of select="."/>
    <xsl:copy-of select="following-sibling::*[position() &lt;= $position-dernier]"/>
  </personne>
</xsl:template>
 
<xsl:template match="prenom"/>
<xsl:template match="age"/>
<xsl:template match="e-mail"/>
<xsl:template match="article"/>
 
</xsl:stylesheet>
qui ajoute de la hiérarchie à l'xml plat suivant :

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
 
<data>
<nom>dupont</nom>
<prenom>martin</prenom>
<age>25</age>
<e-mail>blabla@yahoo.bla</e-mail>
<article>chaussure</article>
<article>table</article>
<article>livres</article>
<article>ordinateur</article>
<nom>john</nom>
<prenom>john</prenom>
<age>10</age>
<e-mail>blabla@gmail.bla</e-mail>
<article>vélo</article>
<article>chaussure</article>
<nom>peter</nom>
<prenom>pete</prenom>
<age>55</age>
<e-mail>blabla@hotmail.bla</e-mail>
<article>verre</article>
</data>
pour produire en sortie :

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
 
<data>
  <personne>
    <nom>dupont</nom>
    <prenom>martin</prenom>
    <age>25</age>
    <e-mail>blabla@yahoo.bla</e-mail>
    <article>chaussure</article>
    <article>table</article>
    <article>livres</article>
    <article>ordinateur</article>
  </personne>
  <personne>
    <nom>john</nom>
    <prenom>john</prenom>
    <age>10</age>
    <e-mail>blabla@gmail.bla</e-mail>
    <article>vélo</article>
    <article>chaussure</article>
  </personne>
  <personne>
    <nom>peter</nom>
    <prenom>pete</prenom>
    <age>55</age>
    <e-mail>blabla@hotmail.bla</e-mail>
    <article>verre</article>
  </personne>
</data>
ma question est : comment serait-il possible de regrouper les éléments <article> dans un élément plus englobant <achats> avant de les copier? J'ai essayé de mettre un dans le mais ça ne marche pas.

D'avance merci à celui qui résoudra ce problème épineux parce que moi je ne sais plus quoi faire.