[XSLT] XSLT et formulaires HTML
bobby
-
I'm_Here Messages postés 156 Statut Membre -
I'm_Here Messages postés 156 Statut Membre -
Bonjour tout le monde,
Voilà mon problème. J'ai un fichier XML, qui fait appel à un fichier xsl pour sa mise en page.
Le fichier XSL affiche un formulaire donc le contenu est décrit par le fichier XML. A la fin de ce formulaire, j'ai un bouton submit.
Je souhaite mettre à jour mon fichier XML en fonction de ce que l'utilisateur aura rempli, mais sans passer par ASP, PHP... Est-il possible, comme je souhaite simplement réécrire un fichier XML, de lancer une action XSL à partir de mon bouton submit ?
Merci pour votre aide
Bobby
Voilà mon problème. J'ai un fichier XML, qui fait appel à un fichier xsl pour sa mise en page.
Le fichier XSL affiche un formulaire donc le contenu est décrit par le fichier XML. A la fin de ce formulaire, j'ai un bouton submit.
Je souhaite mettre à jour mon fichier XML en fonction de ce que l'utilisateur aura rempli, mais sans passer par ASP, PHP... Est-il possible, comme je souhaite simplement réécrire un fichier XML, de lancer une action XSL à partir de mon bouton submit ?
Merci pour votre aide
Bobby
5 réponses
-
Bonjour,
tu peux t'inspirer de ceci :
liste.xml<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="affiche.xsl"?> <list> <regle numero="1" nom="Hypallage"> <description>transfert d'adjectif en vue d'attribuer à certains mots d'une phrase ce qui convient à d'autre mots de la même phrase.</description> </regle> <regle numero="2" nom="Epanaphore"> <description>Repetition d'un mot avec une conjonction</description> </regle> <regle numero="3" nom="Epanalepse"> <description>le même mot est en tête et en fin d'une phrase</description> </regle> </list>
liste.xsl<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes"/> <xsl:param name="numero"/> <xsl:template match="list"> <xsl:variable name="nombre"> <xsl:value-of select="count(//regle[@numero=$numero])"/> </xsl:variable> <xsl:choose> <xsl:when test="$nombre>=1"> <xsl:apply-templates select="//regle[@numero=$numero]"/> </xsl:when> <xsl:otherwise> <div>il n'y a aucune règle répondant au critère sélectionné</div> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="regle"> <div style="color:white;font-size:150%;margin-left:20px"><xsl:value-of select="@nom"/></div> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet>
affiche.xsl<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <head> <title>Moteur de recherche</title> <style type="text/css"> <![CDATA[ body { background:black; } form { margin-left:150px; } input.si { background:orange; width:200px; font-family:verdana; color:black; padding:10px; } input.butt { background:whitesmoke; font-family:verdana; color:gray; border:0px; margin-left:5px; } .nf { color:orange; font-family:verdana; font-size:27px; padding:10px; } ]]> </style> <script src="recherche.js" type="text/javascript"></script> </head> <body> <h1 style="text-align:center; color:orange">Kezako this !!</h1> <hr style="color:white" /> <form name="form1"> <span style="color:whitesmoke;font:17px/14px verdana;">le nombre de mots est :<xsl:value-of select="count(//regle)" /></span><xsl:text> </xsl:text> <input class="si" name="code" type="text" /> <input class="butt" name="button" type="button" onClick="recherche()" value="Recherche" /> </form> <div id="nfig" class="nf"></div> </body> </html> </xsl:template> </xsl:stylesheet>
recherche.jsvar xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); xslDoc.async = false; xslDoc.load("liste.xsl"); xmlDoc.validateOnParse = false; xmlDoc.load("liste.xml"); var xslt = new ActiveXObject("Msxml2.XSLTemplate"); xslt.stylesheet = xslDoc; var xslProc = xslt.createProcessor(); xslProc.input = xmlDoc; function recherche() { xslProc.addParameter("numero", form1.code.value); xslProc.transform(); nfig.innerHTML = xslProc.output; }
bon codage @+ -
j'pense que ça doit etre possible avec un lien en javascript sur ton boutton de submit ... je m'explique :
au lieu du<input type="submit" value="OK">
tu mets un<input type="button" onClick="javascript:goXSL()" value="OK">
avec au préalable dans ton <head>, biensur un<script language="javascript> function goXSL() { //Algo style : Ouvrir une fenetre en poup Le docuemnt appelé dans la fentre st ton xsl avec des parametres Application du xsl (donc changement du xml ) faire un refresh sur la fenetre parent (parent.window.reload() )pour l'affichage de la mofification //FIN Algo style } </script>
Oué je te mets ça en algo , la j'ai pas le temps de le faire à la mimine la...
en gros c'est ça que tu voulais non ?!
Zep3k!GnO
_/______________________________\_
/On est des rangers mec, des rangers !\
\_____________..._________________/ -
Ca correspond effectivement à ce que je souhaite faire... mais comment passes-tu les paramètres du formulaire au fichier xsl ?
Merci en tout cas pour ton coup de main -
mais comment passes-tu les paramètres du formulaire au fichier xsl ?
Oula c'est la que c'est le bordel :
Pour moi, il faudrait que tu fasse un feuillet xsl avec la fonction à appeller avec les paramètres que t'inclus dans ta feuille xsl principale.
Et ton feuillet xsl avec ta fonction et ses paramètres, tu le créé à la volé, dynamiquement avec Php . . .
voilà dans l'esprit , après en pratique, j'avoue c'est cossu !
bon courage . . .
Zep3k!GnO
_/______________________________\_
/On est des rangers mec, des rangers !\
\_____________..._________________/ -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut bobby, je voulais te demander si tu avais réussi ton projet car je travaille sur un projet similaire, et si tu as trouvé la solution, ca m'aiderait énormément, merci