Modifier des éléments avant de les copier
Bonjour,
j'ai la feuille xsl suivante (merci GrandFather):
Code:
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() <= $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:
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:
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
Code:
<xsl:apply-templates>
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.