Rechercher : dans
Par :

XSL acces au nom des balises

Dernière réponse le 29 aoû 2005 à 16:07:35 marc, le 29 aoû 2005 à 11:28:35 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « XSL acces au nom des balises » dans :
[Excel] Chemin et nom de stockage de feuille de calcul VoirIndiquer automatiquement le chemin d'accès (path) et le nom de stockage de toute feuille de calcul Noter dans une cellule (A& par exemple) la formule : =cellule("nomfichier";A1) A chaque sauvegarde et/ou déplacement de fichier dans votre...
Prendre un nom de domaine VoirPrendre un nom de domaine pour son entreprise Un nom de domaine est une adresse Internet qui permet d'accéder à un site web. C'est un nom alphabétique associé à une extension. L'adresse du site de votre entreprise prend la forme de : www.votre-nom...
Webmastering - Nom de domaine VoirQu'est-ce qu'un nom de domaine ? Un site internet est défini par son URL. Ainsi, un site hébergé par un hébergeur gratuit (par exemple un fournisseur d'accès à internet) possède généralement une adresse du type : http://www.votre...

1

teebo, le 29 aoû 2005 à 12:51:16

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? No Kangaroos in Austria

Répondre à teebo

2

marc, le 29 aoû 2005 à 13:27:07

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?

Répondre à marc

4

random, le 29 aoû 2005 à 13:51:59

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

elle est pas belle, la vie ?

Répondre à random

3

marc, le 29 aoû 2005 à 13:46:19

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...

Répondre à marc

5

 teebo, le 29 aoû 2005 à 16:07:35

Ben pour chaque élément tu apply-template groupe et pour les atomes celui d'atome, ça devrait marcher non?
No Kangaroos in Austria

Répondre à teebo
Collection CommentÇaMarche.net