XML et JavaScript dans le navigateur - HTML/CSS - Programmation
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
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 :
|
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).
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...
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
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
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
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
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.
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
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 !
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 " )