HTML,XSLT ET XML LIRE LES DONNEES D'UN XML POUR AFFICHAGE SOUS FORME DE TABLEAU

Neopheus Messages postés 21 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 25 novembre 2005 - 25 nov. 2005 à 07:48
jornov7 Messages postés 4 Date d'inscription dimanche 31 octobre 2010 Statut Membre Dernière intervention 16 avril 2011 - 31 oct. 2010 à 19:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34783-html-xslt-et-xml-lire-les-donnees-d-un-xml-pour-affichage-sous-forme-de-tableau-grace-a-un-script-xslt-en-local

jornov7 Messages postés 4 Date d'inscription dimanche 31 octobre 2010 Statut Membre Dernière intervention 16 avril 2011
31 oct. 2010 à 19:27
Bonjour,
En utilisant le script posté par Loubiou j'ai:

Pour le fichier XML (MEEAB94B_2007.xml):

<?xml version= "1.0" encoding="UTF-8" standalone="yes"?>
<messages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mxx>
<liens>Téléchargement</liens>
2007
<mois>Mai</mois>
<jour>27</jour>
</mxx>
<mxx>
<liens>Téléchargement</liens>
2007
<mois>Juin</mois>
<jour>3</jour>
</mxx>
</messages>

(Je peux le mettre à jour directement via Excel)

Pour le fichier JS (TabdataB2007.js):

AfficheDocXML();
function AfficheDocXML(){

var Document;
Document = new ActiveXObject("Microsoft.XMLDOM");
Document.async = "false";

if(Document.load("../../../BdDXML/2007/MEEAB94B_2007.xml")){
document.write("\");
document.write(' Liens |');
document.write('<col bgcolor =\"73c1de\">');
for(i=0;i<Document.documentElement.childNodes.length;i++){
document.write (\"----
\");
for(j=0;j<= 0;j++){
document.write (\"");
document.write (Document.documentElement.childNodes(i).childNodes(j).text);
document.write (", \");
}
document.write (\"\");
}
document.write ("
");
}else{alert("Le fichier 'MEEAB94B_2007.xml' n'a pas été trouvé!");
}
}

Je n'affiche dans le tableaux uniquement la balise <liens>.
(Entre-nous je peux exécuter le script avec Firefox grâce au module IE Tab).

Ma question:
Je voudrais faire en sorte que le texte 'Téléchargement' entre les balises <liens> du XML puisse être cliquable et se référer à un fichier externe (mp3 par exemple).
Comment puis-je faire cela?
jpclutier Messages postés 23 Date d'inscription lundi 13 novembre 2006 Statut Membre Dernière intervention 6 mars 2009
4 juil. 2008 à 13:48
Oui bien..mais ne fonctionne pas sous FireFox à cause de l'ActiveX. En tout cas pas depuis la v2 (avant il existe des add-ons).
Si quelqu'un à le même bout de code tout prêt pour FF je prends !
mehdikobra Messages postés 24 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 21 décembre 2009
24 juin 2008 à 12:20
c'amarche trés bien
rien dire !! merci
bubuze Messages postés 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 avril 2006
7 nov. 2007 à 23:37
firefox est aussi utilisable, via la librairie sarissa, disponible sur sourceforge.

http://sourceforge.net/projects/sarissa
cs_fly49 Messages postés 4 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 28 novembre 2011
7 nov. 2007 à 15:54
les variables ne sont pas bonnes c'est juste une idée
cs_fly49 Messages postés 4 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 28 novembre 2011
7 nov. 2007 à 15:52
le but de ce script n'est pas de le faire fonctionner en .ap ou en .php ou autre, mais en javascript (le langage client de l'avenir) le broser client bosse et pas le serveur.
Il est très bien mais il faut trouver la solution pour le faire marchr sur FireFox
j'ai des pistes mais ca marche pas:

if (window.ActiveXObject)
{
xmlDoc= new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("catalogue.xml");
envoyerfonctiosuivantequifaitletableau()
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.load("catalogue.xml");
envoyerfonctiosuivantequifaitletableau()}
else
{
alert('Your browser cannot handle this script');
}
}

envoyerfonctiosuivantequifaitletableau(){

document.write("\");
document.write(\" ID |Date |Nom |\");
for(i =0;i<Document.documentElement.childNodes.length;i++){
document.write (\"----
\");
for(j=0;j<= 2;j++){
document.write (\"");
document.write (Document.documentElement.childNodes(i).childNodes(j).text);
document.write (", \");
}
document.write (\"\");
}
document.write ("
");
}else{alert("fichier pas trouvé !");// si pas de fichier, alerte !
}


}
pifou25 Messages postés 144 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 21 décembre 2014
20 juin 2007 à 17:34
Bonjour,
pour l'instant j'en suis encore à essayer de convertir ce code en ASP (au moins ça sera exécuté coté serveur et ça marchera sous tout navigateur). Mais la manière la plus autonome serait de passer le nom du fichier en argument - AfficheDocXML("carnet.xml") - puis de parcourir le 1er élément pour copier les noms des éléments et leur nombre, qui constitueront l'entête du tableau HTML.
Puisque ici la fonction est limitée à 3 colonnes figées (Id, date, nom). Tant qu'à faire une fonction autant la faire compatible ^^
glork Messages postés 29 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 17 février 2006
29 nov. 2005 à 00:43
bof... ca marche pas sous firefox
Loubiou Messages postés 150 Date d'inscription mercredi 26 juin 2002 Statut Membre Dernière intervention 5 décembre 2008
26 nov. 2005 à 12:47
Oui je viens de terminer un parser en php qui fonctionne super bien, mais ça coince avec les gros fichiers arff .... Merci pour ta réponse !!!
bubuze Messages postés 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 avril 2006
26 nov. 2005 à 11:09
si tu produits un xml classique, tu peux toujours l'afficher dans le navigateur (au fait sarissa a pour but de xslt-iser le xml sur tous les navigateurs) puis l'enregistrer "à l'ancienne".
ça ne résoud pas le problème des gros fichiers : j'ai souvenir d'un fil de discussion à ce sujet sur xml-fr.org.
d'autres solutions existent pour automatiser le processus de sauvegarde (php par exemple)
Loubiou Messages postés 150 Date d'inscription mercredi 26 juin 2002 Statut Membre Dernière intervention 5 décembre 2008
25 nov. 2005 à 17:41
Bon peut-être, mais ce qui est certain c'est que le xml avec attribut c'est plus léger bref.
Par contre je ne suis pas certain qu'on puisse enregistrer en dur et en local le fichier XML résltant, de plus le principal inconvéniant avec cette techno XSLT c'est qu'on ne peut pas travailler sur des fichiers de grosses capacité. J'ai fait l'essai ça bloque sur un fichier de 13Mo. Je sais c'est énorme, mais je n'ai pas le choix pour x raisons, je dois utiliser des fichiers XML de grosses capacités d'où l'intéret de parser en attribut, on constate un temps de chargement notoirement diminué.

Merci pour vos messages les Amis codeurs ....
bubuze Messages postés 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 avril 2006
25 nov. 2005 à 16:45
> Si un codeur C++ ou Delphi pouvait offrir une source permettant en 1 clic de réaliser cette transformation des noeuds enfants en attributs des noeuds parents, ce serait un réel outil en local !!!

inutile d'aller parser avec du C ou du delphi, tu peux très bien fabriquer ta propre transformation xslt qui "compressera" ton xml.
bubuze Messages postés 31 Date d'inscription vendredi 18 février 2005 Statut Membre Dernière intervention 25 avril 2006
25 nov. 2005 à 16:41
je pratique le xml transformé par xslt en html via le javascript,
après le temps initial de chargement (relativement) long, la navigation est instantanée !
bien sûr, cela n'est appliquable qu'à des sites petits ou moyens, mais le résultat est bluffant.

techniquement, javascript est indispensable (à ma connaissance), mais firefox est aussi utilisable, via la librairie sarissa, disponible sur sourceforge.

un exemple de ce que ça donne : http://bubuze.chez-alice.fr/_flume/album.htm
Loubiou Messages postés 150 Date d'inscription mercredi 26 juin 2002 Statut Membre Dernière intervention 5 décembre 2008
25 nov. 2005 à 10:39
Oui il faut que le navigateur sache faire appel au parseur XML de la dom du pc pour que cela fonctionne. Il faut aussi qu'il sache interprèter les fonctions javascript.
Sur certain navaigateurs, c'est désactivé par défaut (!).
Neopheus Messages postés 21 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 25 novembre 2005
25 nov. 2005 à 07:48
Ton script ne marche que sur IE
Pas sur Opera...
Rejoignez-nous