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

XSL/XSLT/XPATH XML Discussion :

Récupérer variables d'1 <form> et les utiliser dans X


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Récupérer variables d'1 <form> et les utiliser dans X
    Re- bonjour ! J'espère que ce sera une de mes dernières questions !!!

    Voilà, j'aimerai récupérer les valeurs renvoyées par un formulaire simple et les "affectés" à ma transformation XSL.

    En effet, j'ai un fichier XML et un fichier XSL qui devrait suffire mais la transformation se fait en fonction de ce que l'utilisateur saisie (ce sont ses critères de recherche...).

    Comment faire ? Déjà, est-ce que c'est possible de faire communiquer le fichier XSL avec des valeurs externes qui proviennent d'un formulaire ???

    Je sais qu'avec javascript, on peut lire en entrée des fichiers xml et xsl statique pour en produire une page html et l'afficher. Mais qu'en est-il si le xsl doit être dynamique ???

    Merci d'avance pour la réponse ! C'est trop un casse tête pour moi...

    @++

  2. #2
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    Comment faire ? Déjà, est-ce que c'est possible de faire communiquer le fichier XSL avec des valeurs externes qui proviennent d'un formulaire ???

    Je sais qu'avec javascript, on peut lire en entrée des fichiers xml et xsl statique pour en produire une page html et l'afficher. Mais qu'en est-il si le xsl doit être dynamique ???
    Si tu es du coté client :

    Tu crées une page html avec un zone qui sera construite dynamiquement par une feuille xsl à partir de données xml
    je te donnes un exemple qui effectue un tri sur les attributs d'une personne :

    [XML] données
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <persons>
    <person>
      <name>
        toto
      </name>
      <phone>
      	1122334455
      </phone>
    </person>
    <person>
      <name>
        titi
      </name>
      <phone>
      	3344556677
      </phone>
    </person>
    <person>
      <name>
        tata
      </name>
      <phone>
      	2233445566
      </phone>
    </person>
    </persons>
    [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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="html" indent="yes"/>
     
    	<xsl:param name="field"/>
    	<xsl:param name="order"/>
     
    	<xsl:template match="persons">
    		<table>
    		<xsl:value-of select="$order"/>
    		<tr><th><a href="javascript:tri('name')">name</a></th><th><a href="javascript:tri('phone')">phone number</a></th></tr>
                <xsl:for-each select="person">
                  <xsl:sort select="*[name()=$field]" order="{$order}"/>
     		<tr><td><xsl:value-of select="name"/></td><td><xsl:value-of select="phone"/></td></tr>
                </xsl:for-each>
                </table>
    	</xsl:template>
    </xsl:stylesheet>
    [page html]
    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
    <html>
       <head>
          <title>tri</title>
          <script language="javascript">
          			var order = "ascending"
     
    			function tri(field) {
    			var xslt = new ActiveXObject("Msxml2.XSLTemplate.4.0"); 
    			var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.4.0"); 
    			var xslProc; 
    			xslDoc.async = false; 
    			xslDoc.load("test.xslt"); 
    			xslt.stylesheet = xslDoc; 
    			var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.4.0"); 
    			xmlDoc.async = false; 
    			xmlDoc.load("test.xml"); 
    			xslProc = xslt.createProcessor(); 
    			xslProc.input = xmlDoc; 
    			xslProc.addParameter("field", field); 
    			xslProc.addParameter("order", order); 
    			xslProc.transform(); 
    			divtri.innerHTML = xslProc.output 
    			if(order=="ascending")
    				order="descending"
    			else
    				order="ascending"
    			}
          </script>
       </head>
       <body onload="javascript:tri('name')">
       	<div id="divtri">
       	</div>
       </body>
    </html>
    Le tableau généré par xslt sera inséré dans la balise div.


    Si tu développes coté serveur : tu développes un contrôleur sous la forme d'une servlet (xalan pour le xsl) ou d'une page php (et sablotron pour le xsl). Ce controleur génère la page en entier cette fois et l'envoie au browser du client. La page html générée ne contient plus de script, simplement letableau généré. Les liens ne sont plus javascript:tri('name') mais controleur.php?field="name" par exemple.
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 5
    Points : 2
    Points
    2
    Par défaut merci !!
    Salut Grégory,

    Juste un piti mot pour te remercie de ton aide hyper super précieuse.

    Pour la peine, je te citerai dans les remerciements de mon rapport LOL

    Bonne continuation !


  4. #4
    Membre régulier Avatar de stela86
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 197
    Points : 111
    Points
    111
    Par défaut
    Bonjour,
    voilà j'ai pas vraiment compris où il fallait mettre la page html ?
    J'ai rajouté en en-tete de ton exemple dans la page xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <?xml-stylesheet type="text/xsl" href="tridyna.xsl"?>
    Faut-il rajouter autre chose ailleurs?

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/12/2010, 11h55
  2. Réponses: 3
    Dernier message: 20/04/2009, 09h13
  3. Réponses: 4
    Dernier message: 10/03/2009, 14h05
  4. Réponses: 8
    Dernier message: 20/06/2008, 09h00
  5. variables d'un formulaire et les utiliser ....dans un autre
    Par soltani.slim dans le forum Access
    Réponses: 4
    Dernier message: 22/06/2005, 15h29

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