XML et JavaScript dans le navigateur

XML et JavaScript dans le navigateur - HTML/CSS - Programmation

Marsh Posté le 31-05-2006 à 02:31:09    

Petite question à 30 centimes...
 
http://magicbuzz.multimania.com/test/g1.xml
 
=> Sous IE, ça devrait afficher 2 boutons, qui permettent d'avancer et reculer dans les pages de la gallerie
 
Mais sous Mozilla, que néni.
Normal, c'est désactivé.
Pourquoi ?
Parceque Moz ne support pas les objets "document.XMLDocument" et "document.XSLDocument" en JavaScript.
 
J'imagine naïvement qu'il y a un équivalent... Mais lequel ?
 
(voir le fichier XSL assicié au XML... j'en vois déjà arriver en disant "y'a pas de JS dans ton bignou :o" ;))

Reply

Marsh Posté le 31-05-2006 à 02:31:09   

Reply

Marsh Posté le 31-05-2006 à 10:09:20    

Je dois le faire exprès quand je poste un truc...
 
Y'a jamais personne qui répond :cry:

Reply

Marsh Posté le 31-05-2006 à 10:25:50    

tu as window.XSLTProcessor sous FF et derrière tu dois utiliser importStylesheet, transformtodocument et xmldocumenttostring...
 
Tiens j'avais fait c'est fonction pour appliquer mes xslt:

Code :
  1. function applyXSLT (xml, xsl) {
  2.   /*** use transformNode methods for doing XSLTranformation with activeX object ***/
  3.   if (window.ActiveXObject){
  4.     return xml.transformNode(xsl);
  5.   }else{
  6.     /*** use XSLTProcessor in other case: firefox, mozilla ... ***/
  7.     /*** Create instance of processor ***/
  8.     if (window.XSLTProcessor != null) {
  9.       var xsltProc  = new XSLTProcessor();
  10.       /*** Import style pass by argument ***/
  11.       xsltProc.importStylesheet(xsl);
  12.       /*** Transform it with processor ***/
  13.       var xsltDoc = xsltProc.transformToDocument(xml);
  14.       return XMLDocumentToString(xsltDoc);
  15.     } else {
  16.       /*** server side transo ***/
  17.     }
  18.   }
  19. }


 
Mais bon, y'a pas d'équivalent sur Opera ( enfin si mais sur le 9beta) par exemple. Du coup on a même du rajouter un partie en ajax qui "fait faire " l'application de la xslt coté serveur ( l'échange est fait via xmlhttprequest qui est lui supporté par Opera).

Message cité 1 fois
Message édité par anapajari le 31-05-2006 à 10:26:56
Reply

Marsh Posté le 31-05-2006 à 10:27:48    

xml et xsl viennent d'où ?

Reply

Marsh Posté le 31-05-2006 à 10:59:50    

En effet, mon JS doit :
-> Modifier un élément "xsl:variable" dans la feuille XSL
-> Modifier des attributs pour certains éléments dans la feuille XML
-> Re-tranformer le tout pour voir les changements.
 
Je peux à la rigueure zapper la modification de la feuille XSL si ça pose problème.
 
En fait, actuellement, le XSL, au chargement, avant tout script :
-> teste une variable initialisée à 1000
-> pour chaque image, si son ID est inférieur à cette variable, l'affiche
 
Ensuite, je JS récupère depuis le XML le nombre d'images à afficher à la fois.
Modifie le XSL pour changer cette variable avec ce nombre d'images.
 
Puis sur le click des boutons, modifie les ID des images, et réapplique le XSL de façon à naviguer dans lesimages.
 
J'ai donc besoin de pouvoir jouer avec les documents XML et XSL.
 
Je ne peux pas attaquer le serveur (ce serait bien plus simple ;)) étant donné que le but est de pouvoir distribuer sur n'importe quel serveur la gallerie d'image, sans devoir tenir compte de la plateforme du serveur.
 
Si vraiment y'a pas moyen de moyenner, j'ai aussi pensé à une solution "full js", mais j'aurais préféré utiliser les fonctionnalité du XSL à la place...


Message édité par Arjuna le 31-05-2006 à 11:00:03
Reply

Marsh Posté le 31-05-2006 à 11:14:53    

Dans ce que je t'ai donné xml et xsl étaient deux flux récuperer du server via xmlhttprequest.
Mais en fait ton cas est légèrement différent puisque c'est le document lui même qui est le flux xml et que tu veux modifier la xsl associée à la volée ... et je me suis jamais penché sur ce cas :D
Mais si tu "zappes" la modification de la XSLT tu ne devrais plus avoir de problème, le seul truc c'est que tu vas devoir faire "le tri" en js, c'est bourrin mais via dom c'est pas trop dur [:spamafote]
 
edit:
D'ailleurs moi si je devais faire ton truc, je repartirais sur ce dont j'ai l'habitude ;)
- un page html  
- récupération du flux xml via xmlhttprequest
- récupération du flux xsl via xmlhttprequest
- application de la xslt coté client  
- tri dans le xml resultant via dom
- affichage via dom dans la page html


Message édité par anapajari le 31-05-2006 à 11:17:35
Reply

Marsh Posté le 31-05-2006 à 11:17:37    

anapajari a écrit :

Mais bon, y'a pas d'équivalent sur Opera ( enfin si mais sur le 9beta) par exemple.


Il n'y a aucun support dans Safari non plus [:petrus75]
 
Le navigateur gère le XML et les XSLT, mais il n'y a aucun interface JS exposée.
 
Sinon Arjuna je pense que de temps en temps tu devrais visiter DevMo, parce que genre là il suffit de faire une petite recherche et on arrive sur DevMo - XSLT avec en première page un article sur l'utilisation de l'interface JavaScript de Mozilla pour les transformations XSL
 
D'ailleurs l'interface vers le processeur XSLT implémentée dans Opera9 est également un objet XSLTProcessor.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 31-05-2006 à 11:55:00    

Voilà, corrigé en version "full js" (avec un joli message pour les gens qui n'utilisent pas le JS)
 
-- edit: Corrigé avec un message un peu plus politiquement correct :D


Message édité par Arjuna le 31-05-2006 à 12:11:01
Reply

Marsh Posté le 31-05-2006 à 11:59:22    

masklinn a écrit :

Sinon Arjuna je pense que de temps en temps tu devrais visiter DevMo, parce que genre là il suffit de faire une petite recherche et on arrive sur DevMo - XSLT avec en première page un article sur l'utilisation de l'interface JavaScript de Mozilla pour les transformations XSL


Ze soucy, c'est que ça rentre pas du tout dans ce que je veux faire.
Moi je veux pas me faire chier à recharger le XML et XSL à chaque click de l'utilisateur, sinon autant générer 25000 pages HTML statiques...
 
Je voulais donc savoir si Moz stockait dans un coin, de façon accessible, comme le fait IE, les flux XML/XSL qu'il a utilisé pour générer le document.
Pas envie de refaire une requête à chaque fois...
 
C'est d'autant plus stupide de devoir faire une requête HTTP que le jour où ton flux XML est généré par un code côté Server, tu vas avoir un flux différent à chaque fois... Super pratique !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed