Bonsoir à tous et toutes,
Voilà mon petit problème, j'ai un fichier xml contenant des produits avec différentes attributs, l'idée est d'avoir une page html avec un field dans lequel on entre une valeur qui pourra permettre de filtrer les produits, donc suivant une occurrence d'attribut définie par le field. Le problème c'est que j'ai l'impression que la variable n'est pas passée depuis le .html vers le .xsl dans lequel j'utilise le contenu de la variable, du moins c'est mon idée. Si vous voulez regarder par vous-même :
Fichier html avec javaScript :
Le fichier xsl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Liste des produits par niveau de réapprovisionnement</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript" type="text/JavaScript"> function lister(niv) { // On charge la feuille XSL var feuilleXsl = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0"); feuilleXsl.async = false; feuilleXsl.load("styleProd.xsl"); // On charge le document XML var docXml = new ActiveXObject("Msxml2.DOMDocument.4.0"); docXml.async = false; docXml.load("Produits.xml"); // On transforme var xslt = new ActiveXObject("Msxml2.XSLTemplate.4.0"); xslt.stylesheet = feuilleXsl; var procXsl; // On crée un processeur xslt procXsl = xslt.createProcessor(); //On lui soumet le doc xml procXsl.input = docXml; //traitement procXsl.addParameter('niveau', niv); procXsl.transform(); //On récupère la sortie du traitement var resultat = procXsl.output; var entete = 'Saisir un autre niveau<br /><form name="formulaire"><input name="niv" type="text"><br /><input type="button" name="recherche" value="Recherche" onClick="lister(this.formulaire.niv.value)"></form>'; //Affichage du résultat document.body.innerHTML = entete + resultat; } </script> </head> <body> <font face="Comic sans ms" size="3">Entrez un niveau de réapprovisionnement</font><br /> <form name="formulaire"> <input name="niv" type="text"><br /> <input type="button" name="recherche" value="Recherche" onClick="lister(this.formulaire.niv.value)"> </form> </body> </html>
J'ai déjà essayer pas mal de choses avec ça mais rien n'y fait. Lorsque j'entre une valeur pour la variable utilisée dans le xsl, lorsque j'ouvre le .xml nickel j'ai la liste filtrée...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!--<xsl:param name='niveau'>25</xsl:param>--> <xsl:template match="/"> <html> <head> <style type="text/css"> table { border-collapse: collapse; border: solid black 1px; margin-left:150px;} td { padding: 3px; border: solid black 1px;} th { padding: 3px; border: solid black 2px;} </style> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> </head> <body> <p align="center"> <font size="4" face="Imprint MT Shadow">Liste filtrée</font> </p> <table width="800px"> <TR> <TH> Position </TH> <TH> Référence </TH> <TH> Libellé </TH> <TH> N° fournisseur </TH> <TH> Catégorie </TH> <TH> Quantité/unité </TH> <TH> Prix unitaire </TH> <TH> Stock </TH> <TH> Unités commandées </TH> <TH> Niveau réapprovisionnement </TH> <TH> Indisponible </TH> </TR> <xsl:element name="p"><xsl:value-of select= '$niveau' /></xsl:element> <xsl:for-each select="dataroot/Produits[Niveau_de_réapprovisionnement=$niveau]"> <xsl:sort select="Nom_du_produit" data-type="text" order="ascending"/> <tr> <td width="25%" size="12px"> *<xsl:number value="position()" format="1. "/> </td> <td width="25%" size="12px"> *<xsl:value-of select="Réf_produit"/> </td> <td width="25%" size="12px"> *<xsl:value-of select="Nom_du_produit"/> </td> <td width="25%" size="12px" align="center"> *<xsl:value-of select="N_fournisseur"/> </td> <td width="25%" size="12px" align="center"> *<xsl:value-of select="Code_catégorie"/> </td> <td width="25%" size="12px"> *<xsl:value-of select="Quantité_par_unité"/> </td> <td width="25%" size="12px"> *<xsl:value-of select="Prix_unitaire"/> </td> <td width="25%" size="12px"> *<xsl:value-of select="Unités_en_stock"/> </td> <td width="25%" size="12px" align="center"> *<xsl:value-of select="Unités_commandées"/> </td> <td width="25%" size="12px" align="center"> *<xsl:value-of select="Niveau_de_réapprovisionnement"/> </td> <td width="25%" size="12px" align="center"> *<xsl:value-of select="Indisponible"/> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
Merci d'avance pour votre aide,
Arkh.
Partager