> J'ai un problème à résoudre. Je voudrais passer un parametre à partire
> une formulaire HTML à un fichier XML.
> Et puis, à son tour, le fichier
> XML var passer ce parametre à son fichier de style XSL. Et dans ce
> fichier de style XSL, je vais utiliser ce paramettre pour mon travail.
> Filtrer par exemple.
Tout dépend du processeur XSLT que vous utilisez. Chaque processeur
propose des instructions pour passer des paramètres à la feuille XSL au
moment de la transformation. Du côté d'un client web (Mozilla), nous
avons quelque chose comme ceci:
*Page HTML: Javascript pour récupérer les infos et lancer la
transformation
function updateXML(fXML, fXSL, dir, file, action) {
// paramètre à récupérer dans le formulaire
id = document.forms[0].elements[0].value;
name = document.forms[0].elements[1].value;
...
//chargement des fichiers XML et XSL
var oXML = document.implementation.createDocument("", "", null);
var oXSL = document.implementation.createDocument("", "", null);
var loadCount = 0;
oXML.addEventListener("load", onload, false);
oXSL.addEventListener("load", onload, false);
oXML.load(fXML);
oXSL.load(fXSL);
...
//initialisation du processeur
var xsltProcessor = new XSLTProcessor();
//passage des paramètres
xsltProcessor.setParameter(null, "action", action);
xsltProcessor.setParameter(null, "id", id);
xsltProcessor.setParameter(null, "name", name);
...
//application de la feuille de style en tenant compte des paramètres
xsltProcessor.importStylesheet(oXSL);
var newXML = xsltProcessor.transformToDocument(oXML);
//utilisation de l'objet XML résultant
...
}
}
*Fichier XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="UTF-8" indent="yes"
cdata-section-elements="lnk"/>
<xsl:param name="action"/>
<xsl:param name="id"/>
<xsl:param name="name"/>
<xsl:param name="version"/>
<xsl:param name="user"/>
<xsl:param name="number"/>
<xsl:param name="lnk"/>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="$action = 0">
<Serial id="Number">
<xsl:for-each select="//Soft[@id != $id]">
<xsl:copy-of select="."/>
</xsl:for-each>
</Serial>
</xsl:when>
...
Que vous effectuiez la transformation côté client (IE6, Mozilla) ou
côté serveur (ex.: Xalan), le principe reste le même, seules changent
les instructions qui permettent d'appeler le processeur et de passer
les paramètres.
Si vous nous donnez plus d'informations sur le processeur XSLT que vous
utilisez, les autres personnes de cette mailing-list pourront sans
doute vous préciser les instructions pour passer les paramètres
correspondant à votre processeur.
--
Dimitri Mouffet
<http://homepage.mac.com/dmouffet/Resume/index.html>
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Fri Apr 11 10:27:25 2003