Listing récursif d'un XML avec XSLT
Résolu/Fermé
Shadowxvii
-
2 mai 2011 à 21:05
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 - 3 mai 2011 à 13:21
creadiff Messages postés 445 Date d'inscription samedi 3 avril 2010 Statut Membre Dernière intervention 3 novembre 2011 - 3 mai 2011 à 13:21
Bonjour,
Je veux afficher sur une page web la liste des noeuds d'un fichier XML à l'aide de XSLT. Je ne peux pas prédire le contenu du fichier XML ni les noms des noeuds.
Si quelqu'un peut m'aider, merci.
Je veux afficher sur une page web la liste des noeuds d'un fichier XML à l'aide de XSLT. Je ne peux pas prédire le contenu du fichier XML ni les noms des noeuds.
Si quelqu'un peut m'aider, merci.
A voir également:
- Listing récursif d'un XML avec XSLT
- Xml download - Télécharger - Édition & Programmation
- Office xml handler - Télécharger - Traitement de texte
- Driveimage xml - Télécharger - Sauvegarde
- Faire un listing - Guide
- Convertir txt en xml - Forum Programmation
3 réponses
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
2 mai 2011 à 21:08
2 mai 2011 à 21:08
Quel est le but ?
Ce serait sympa qu'on ait un peu plus d'infos, sinon on ne te sera pas d'une grande aide.
Ce serait sympa qu'on ait un peu plus d'infos, sinon on ne te sera pas d'une grande aide.
Ce n'est pas plus compliquer que ça en fait. J'ai un fichier XML et je veux afficher seulement le nom de chacun des noeuds sur une page web avec un XSLT. Par exemple, j'ai le fichier XML suivant
<librairie>
<adresse>123 fausse rue</adresse>
<livres>
<livre>
<auteur>nom</auteur>
<titre>Un titre</titre>
<prix>19.99</prix>
</livre>
<livre>
<auteur>un autre nom</auteur>
<titre>Un autre titre</titre>
<prix>14.99</prix>
</livre>
</livres>
</root>
Et je veux une page HTML qui m'affichera le nom des noeuds du XML, à savoir
-librairie
-adresse
-livres
-livre
-auteur
-titre
-prix
-livre
-auteur
-titre
-prix
Le contenu des noeuds du XML n'est pas important pour le moment.
Le problème vient du fait que je ne peux pas savoir d'avance ce que contiendra le XML comme nom de noeuds.
J'espère que c'est maintenant plus clair. Merci
<librairie>
<adresse>123 fausse rue</adresse>
<livres>
<livre>
<auteur>nom</auteur>
<titre>Un titre</titre>
<prix>19.99</prix>
</livre>
<livre>
<auteur>un autre nom</auteur>
<titre>Un autre titre</titre>
<prix>14.99</prix>
</livre>
</livres>
</root>
Et je veux une page HTML qui m'affichera le nom des noeuds du XML, à savoir
-librairie
-adresse
-livres
-livre
-auteur
-titre
-prix
-livre
-auteur
-titre
-prix
Le contenu des noeuds du XML n'est pas important pour le moment.
Le problème vient du fait que je ne peux pas savoir d'avance ce que contiendra le XML comme nom de noeuds.
J'espère que c'est maintenant plus clair. Merci
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 340
Modifié par mpmp93 le 3/05/2011 à 10:11
Modifié par mpmp93 le 3/05/2011 à 10:11
Bonjour,
Quelque chose comme ceci?
ATTENTION: le code source doit im-pé-ra-ti-vement être en encodage UTF8 !!!!
A+
Quelque chose comme ceci?
<?php function afficheRecursif($xmlObj) { echo "<ul>"; foreach ($xmlObj->children() as $child) { echo "<li>" . $child->getName() . ": " . $child . "</li>\n"; if (count($child) != 0) { afficheRecursif($child); } } echo "</ul>\n"; } $xml = <<<EOT <librairie> <adresse>123 fausse rue</adresse> <livres> <livre> <auteur>Victor HUGO</auteur> <titre>les misérables</titre> <prix>19.99</prix> </livre> <livre> <auteur>Jules VERNES</auteur> <titre>de la terre à la Lune</titre> <prix>14.99</prix> </livre> </livres> </librairie> EOT; $librairie = simplexml_load_string($xml); // print_r($librairie); afficheRecursif($librairie);
ATTENTION: le code source doit im-pé-ra-ti-vement être en encodage UTF8 !!!!
A+
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
3 mai 2011 à 12:37
3 mai 2011 à 12:37
L'encodage du code source dépend de celui utilisé dans le XML (qu'il soit UTF, ISO ou autre). Il doit également se répercuter au moment du chargement du fichier XML par PHP.
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 340
3 mai 2011 à 12:43
3 mai 2011 à 12:43
Il est obligatoire d'encoder en UTF-8, car les fonctions au travers de SimpleXML en PHP 5.x n'acceptent que cet encodage...
Ou alors:
$librairie = simplexml_load_string(utf8_encode($xml));
si le XML source n'est pas encodé UTF8.
Ou alors:
$librairie = simplexml_load_string(utf8_encode($xml));
si le XML source n'est pas encodé UTF8.
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
3 mai 2011 à 13:21
3 mai 2011 à 13:21
Tu n'as pas spécifié quelle librairie tu utilisais, j'ai donc supposé DOMDocument (puisque c'est ce qui a été évoqué précédemment (et qui a d'ailleurs résolu le sujet)).
creadiff
Messages postés
445
Date d'inscription
samedi 3 avril 2010
Statut
Membre
Dernière intervention
3 novembre 2011
57
2 mai 2011 à 21:36
2 mai 2011 à 21:36
OK, donc il y a une structure connue.
Depuis PHP, tu pourrais parser le XML avec DOMDocument, et ensuite reconstruire le HTML. La manipulation des noeuds avec DOMDocument est très similaires aux opérations sur le DOM faites depuis JavaScript.
Depuis PHP, tu pourrais parser le XML avec DOMDocument, et ensuite reconstruire le HTML. La manipulation des noeuds avec DOMDocument est très similaires aux opérations sur le DOM faites depuis JavaScript.