Html,xslt et xml lire les donnees d'un xml pour affichage sous forme de tableau grace a un script xslt en local

Soyez le premier à donner votre avis sur cette source.

Vue 25 709 fois - Téléchargée 2 068 fois

Description

Je ne sais pas si ma source est en bonne place (se serait plustôt une astuce).
Les fichiers XML prennent de plus en plus d'importance sur le web par leur façon de présenter les données sous forme structurée mais aussi permettant un chargement rapide par certaines applications.

Le principe :

On se propose de lire les données issues d'un fichier XML sous forme de noeuds et de les afficher dans une page HTML sous forme de tableau.
Pour cela on utilise un script XSLT dans la page html et on ne touche pas au XML (ce qui est très pratique lorsqu'on a plusieurs milliers de fichiers XML produits par une base de données par exemple).

Source / Exemple :


script language="JavaScript">
AfficheDocXML();
function AfficheDocXML(){

var Document;
Document = new ActiveXObject("Microsoft.XMLDOM");// on fait appel à la DOM pour parser le XML !
Document.async = "false"; // on lit en synchrone

if(Document.load("catalogue.xml")){// au chargement on met en forme puis on place dans les cellules
                                  document.write("<TABLE BORDER=1 CELLPADDING=0>");
                                  document.write("<THEAD><TH>ID</TH><TH>Date</TH><TH>Nom</TH></THEAD>");
for(i=0;i<Document.documentElement.childNodes.length;i++){
                                                          document.write ("<TR ALIGN=center>");
                                                          for(j=0;j<= 2;j++){
                                                                             document.write ("<TD>");
                                                                             document.write (Document.documentElement.childNodes(i).childNodes(j).text);
                                                                             document.write ("</TD>");
                                                                             }
                                                          document.write ("</TR>");
                                                         }
                                  document.write ("</TABLE>"); 
                                }else{alert("fichier pas trouvé !");// si pas de fichier, alerte !
								}
}								
</script>

Conclusion :


Bien entendu, si vous avez un fichier XML important, il y aura un temps de chargement non négligeable !
Pour diminuer ce temps de chargement, passee les noeuds sous forme d'attributs de cette forme :

<Commandes>
<Ordre
id ="1"
date="4/12/2002"
name = "hélène Marqué"/>

<Ordre
id ="2"
date="4/12/2002"
name = "Jean Bonbeurre"/>

</Commandes>

Il faudra réécrire le script pour lire les attributs des noeuds (of course).
Cette façon de coder le XML vous permettra outre un gain de place sur le fichier XML, un temps de chargement augmenté de 25%

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 !!!
Je vois ce prog un peu comme un batch qui scann les fichiers XML d'un dossier pour en faire l'inventaire dans un fichier result.xml par exemple.
Qui à l'ouverture de chaque fichiers XML du répertoire, regarderait si l'encodage est bien UTF-8 (auquel cas il remplacerait cette 1ère ligne par le codage UTF-8) puis circulerait sur tous les noeuds parents de 1er niveau pour transformer les noeuds enfants en attributs du noeuds parents !!!

Je pense que ce serait une super bonne source utile (un .exe, un clic et zooooouuuu).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jornov7
Messages postés
4
Date d'inscription
dimanche 31 octobre 2010
Statut
Membre
Dernière intervention
16 avril 2011
-
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
-
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
-
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
-
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
-
les variables ne sont pas bonnes c'est juste une idée

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.