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 562 fois - Téléchargée 2 064 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

Neopheus
Messages postés
21
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
25 novembre 2005
-
Ton script ne marche que sur IE
Pas sur Opera...
Loubiou
Messages postés
150
Date d'inscription
mercredi 26 juin 2002
Statut
Membre
Dernière intervention
5 décembre 2008
-
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 (!).
bubuze
Messages postés
31
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
25 avril 2006
-
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
bubuze
Messages postés
31
Date d'inscription
vendredi 18 février 2005
Statut
Membre
Dernière intervention
25 avril 2006
-
> 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.
Loubiou
Messages postés
150
Date d'inscription
mercredi 26 juin 2002
Statut
Membre
Dernière intervention
5 décembre 2008
-
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 ....

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.