IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[JavaScript - XML/XSL] fonction et filtre


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut [JavaScript - XML/XSL] fonction et filtre
    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 :
    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>
    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
    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>
    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...
    Merci d'avance pour votre aide,
    Arkh.

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <!--<xsl:param name='niveau'>25</xsl:param>-->
    Donc si tu mets en commentaires la définition du paramètre, il ne va pas pouvoir l'injecter. Décommente. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:param name='niveau' />

    ERE

  3. #3
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Merci pour ton conseil, j'ai remplacé mais cela ne fonctionne toujours pas. Quelque chose bloque mais je n'arrive pas à trouver quoi :/

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re,

    Tu peux faire un zip avec tes fichiers et un jeu de données ?

    ERE

  5. #5
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut re
    Bien sûr! Le voici.
    Merci pour le temps investit, même si ça n'a pas l'air de grand chose
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" name="recherche" value="Recherche" onClick="lister(this.formulaire.niv.value)">
    est erroné, il faut mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="button" name="recherche" value="Recherche"
     onClick="lister(this.form.niv.value)">
    Et tout rentre dans l'ordre !

    ERE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/07/2007, 09h27
  2. Javascript XML XSL
    Par bewonder dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/01/2007, 16h30
  3. XML - XSL et Javascript
    Par tiboel dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 01/03/2006, 12h50
  4. [Xml/XSl] utiliser des fonction vb
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/01/2006, 17h28
  5. [XML][XSL][DOM][JAVASCRIPT]melanger le tout, laisser reposer
    Par mitsein dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/07/2004, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo