les navigateurs et <?xml-stylesheet type="text/xsl" ...

les navigateurs et <?xml-stylesheet type="text/xsl" ... - XML/XSL - Programmation

Marsh Posté le 15-11-2007 à 10:37:18    

Bonjour,
 
Je travail sur des sites web qui générent du xml qui est transformé via php et des xsl.
ça marche plutot bien, mais ça prends pas mal de ressources coté serveur. Je cherche donc a optimisé ce traitement.
Et je suis tombé sur http://www.gchagnon.fr/cours/xml/domxslt.html et particulièrement sur http://www.gchagnon.fr/cours/xml/exemples/nuages.xml
Le serveur envoie au client le xml brut et la xsl et le navigateur du client fait la transformation.  
 
Je souhaite mettre en place ce mécanisme pour soulagé le serveur.  
Mais je n'ai pas de trouver beaucoup de retour d'experience sur internet sur ce mécanisme.
 
Est ce que certains ici l'ont testé et mis en prod ? est ce que XSLT est entièrement supportée par les navigateurs ? il y a des limitations ?
 
J'ai tester avec succès l'exemple plus haut avec firefox,IE6, IE7, opera et safari mais l'exemple est assez simple.
 
 
 
 
 
 

Reply

Marsh Posté le 15-11-2007 à 10:37:18   

Reply

Marsh Posté le 16-11-2007 à 00:32:40    

Je crois que seul des navigateurs assez récent supporteront la transformation à la volée.
 
Par contre j'ai jamais entendu parler de pb de compatibilité. A mon avis (mais je ne suis pas un spécialiste) ça marche parfaitement ou ça ne marche pas du tout.

Reply

Marsh Posté le 16-11-2007 à 03:24:39    

Ca marche bien. Il me semble que seul XSLT 1 est supporte par ces browsers et que tu ne peux pas utiliser les extentions.

Reply

Marsh Posté le 16-11-2007 à 09:39:58    

ok donc aucun de vous ne l'a encore mis en prod :(
le problème c'est que je manque de référence sur le sujet et de solutions alternatives fiables.
J'ai rapidement tester AjaXslt mais je suis plutôt déçu.
 

Reply

Marsh Posté le 26-11-2007 à 11:20:04    

Le XSL s'applique généralement sans souci.
 
C'est ce que le XSL a généré dont le comportement est plus difficile à prévoir.
 
Effectivement, sous IE comme sous FF, il existe des modifications substentielles de rendu lorsque la page est valide XHTML ou HTML4 ou autre. Et le problème, c'est qu'il est quasi impossible de débuger une page HTML générée à la volée par le navigateur parceque... Dans le navigateur tu n'as accès qu'aux valeurs XML, et au XSL, mais pas au produit de la transformation !
 
Du coup lorsque tu introiduit un bug dans le HTML généré, le moteur de rendu peut changer de mode de fonctionnement, et donc modifier tout le rendu, sans qu'il soit possible de trouver ce qu'il se passe. Le debug est donc très difficile.
C'est en tout cas la seule limitation que j'ai rencontré.
 
Ceci dit, niveau support, je n'étais pas très embêté, tous les utilisateurs du site où j'avais utilisé ce système étaient équipés de IE, qui sait faire de la transformation XSL depuis la version 5.
 
Pour FF, je ne sais pas depuis combien de temps c'est supporté (pas mal de temps aussi). Pour les autres navigateurs par contre, aucune idée.
 
A noter tout de même un élément TRES gênant avec XML/XSL côté client :
1/ Toutes les variables "cachées" utilisées dans ton XML pour faire le rendu XSL sont visibles. C'est pas forcément toujours très heureux, puisque la source XML et XSL sont visibles (et ça peut donner des idées à un petit matin pour tenter de corrompre le fonctionnement du site)
2/ La moindre erreur à la con, et le rendu ne se fait pas du tout. Ca va du guillement ou signes "&", "<" et  ">" mal gérés au problème de charset. C'est très chiant quand t'as une page "caractère non confome rencontré à la ligne 1" et qu'il est impossible de voir quoi que ce soit (aussi bien pour l'utilisateur final qui est complètement bloqué que pour le dev qui ne peut pas récupérer la moindre info utile lors de l'erreur)
3/ Un utilisateur peut très aisément écrire un "butineur" qui va venir télécharger ton flux XML afin d'alimenter une base à lui, genre comparateur de prix, etc. Et tu n'as aucun moyen pour te protéger dans ce cas.

Reply

Marsh Posté le 26-11-2007 à 11:38:41    

l'idée d'origine était que l'on voulait diminuer la charge sur le serveur.
De plus nos sites doivent rester accessibles aux navigateurs en mode texte, et ça aurait été chiant de trouver à la volée les navigateurs supportants ces tranfo.
 
donc ça plus une éventuelle fuite de données on s'est tourné vers xslCache http://code.nytimes.com/projects/xslcache qui marche plutot bien.

Reply

Marsh Posté le 26-11-2007 à 11:47:33    

Exemple de "buttineur".

Code :
  1. Option Explicit
  2.  
  3. Dim dom, root, nuage
  4. Dim alt
  5. Dim str
  6.  
  7. alt = CInt(InputBox("Altitude ?" ))
  8. str = "Nuages trouvés :" & vbCrlf
  9.  
  10. Set dom = CreateObject("Microsoft.XMLDOM" )
  11. dom.async = false
  12. dom.Load("http://www.gchagnon.fr/cours/xml/exemples/nuages.xml" )
  13. Set root = dom.documentElement
  14.  
  15. For each nuage in root.selectNodes("nuage" )
  16.  If CInt(nuage.selectSingleNode("altitude" ).attributes(0).value) > alt and CInt(nuage.selectSingleNode("altitude" ).attributes(1).value) < alt Then
  17.    str = str & "- " & nuage.SelectSingleNode("nom" ).text & vbCrLf
  18.  End If
  19. Next
  20.  
  21. MsgBox(str)


 
Ce petit script VBS permet d'obtenir la liste des nuages présents à une certaine altitude, sans pour autant passer par le site.
 
C'est typiquement le genre de choses qu'on ne veut pas forcément permettre.

Reply

Sujets relatifs:

Leave a Replay

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