Posez votre question Signaler

XSL acces au nom des balises [Résolu]

marc - Dernière réponse le 29 août 2005 à 16:07
Bonjour,

j'ai un probleme très simple a resoudre, mais je n'ai pas trouvé la fonction adéquate...
J'ai un fichier xml de forme minimale:
<groupe titre="" montant="">
<groupe titre="" montant="">
<atome>
<Code></Code>
<Designation></Designation>
<Unite></Unite>
<Quantite></Quantite>
<PrixUnitaire></PrixUnitaire>
<Montant></Montant>
</atome>
</groupe>
</groupe>

sachant qu'un "groupe" contient soit des "groupe" soit des "atome".

Je désire effectuer un test (récursif) <xsl:if > sur le type de balise.
en pseudo langage:
pour chaque "groupe" (inclu tous les descendants),
si il n'existe pas d'enfant "atome", alors ...
sinon ...

Mon probleme réside dans le fait que je n'arrive pas a faire le test sur la balise "atome" en elle meme. J'ai essayé avec xsl:node-name, mais je n'ai pas réussi...

Merci d'avance pour vos réponses,
Marc
Lire la suite 

XSL acces au nom des balises »

5 réponses
Réponse
+0
moins plus
Salut, je comprend sans doute pas bien le problème...

tu fais un pour chaque groupe/atome
et après pour référencer ton groupe tu utilises ../
Non?
Ajouter un commentaire
Réponse
+0
moins plus
Effectivement, ce que tu me suggeres fonctionnent bien, mais ce n'est pas exactement ce dont j'ai besoin.

En fait, j'ai un fichier xml (celui que j'ai détaillé plus haut) dont les données sont à inclure dans un autre fichier xml avec des balises précises. Ce que je fais, c'est que je construis le second fichiers xml en appliquant une xslt sur le 1er.
Mon probleme est donc le suivant:
les "groupe" doivent s'imbriquer les uns dans les autres, et lorsque le dernier groupe ne contient que des "atome", je dois inclure les données relatives à l' "atome" dans des balises spécifiques.

ex: mon 2nd fichier xml doit ressembler à ca:
<balise1 id="titre du groupe parent">
<balise1 id="titre du groupe fils">
<balise2>
<balise3>Prix Unitaire:3.00</balise3>
<balise4>code:14584 </balise4>
</balise2>
</balise1>
</balise1>

les balises1,2,3 me sont imposées. Il s'agit en fait du principe des poupées russes... C'est pourquoi je pensais avoir besoin du "if", pour tester le type de noeud (groupe ou atome):
si l'enfant est un groupe, alors ecrire balise 1
sinon, ecrire balise2.
Donc mon probleme est double: recuperer le nom des balises, et réussir à insérer le contenu de "atome" dans la derniere balise2...

Est-ce maintenant plus clair maintenant teeboo?
vois tu une maniere de regler le probleme?
random - 29 août 2005 à 13:51
supposons une hiérarchie de niveau 3 maxi
je demande le tri par niveau 1 2 3

pére fils atome
* * *
père pasnull fils pas null atome pas null je peux diriger vers atome
* *
ici atome est null je suis dans un groupe fils
etc...
pas certain d'avoir compris

Ajouter un commentaire
Réponse
+0
moins plus
de maniere encore plus simple:

pour chaque "group", faire:
si les enfants sont des "groupe", alors boucler
si les enfants sont des "atome", alors insérer balise2..

dans ce cas, je ne sais pas trop comment faire pour reboucler. J'ai testé apply-templates, sans succès...
teebo - 29 août 2005 à 16:07
Ben pour chaque élément tu apply-template groupe et pour les atomes celui d'atome, ça devrait marcher non?
Ajouter un commentaire
Ce document intitulé « XSL acces au nom des balises » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook