[XSLT] XSLT et formulaires HTML

bobby -  
I'm_Here Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

5 réponses

I'm_Here Messages postés 154 Date d'inscription   Statut Membre Dernière intervention   26
 
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.js
var 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 @+
5
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
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 !\
\_____________..._________________/
0
bobby
 
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
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
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 !\
\_____________..._________________/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fonzy
 
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
0