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 :

[XSLT][XML][AJAX] Quelques problème avec le XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut [XSLT][XML][AJAX] Quelques problème avec le XML
    Bonjour,
    Voila j'ai un site web à construire avec une base de donnée en XML
    j'ai donc un fichier.xml contenant les vols en france
    Exemple
    <racine>

    <vols>

    <Compagnie>Air France</Compagnie>
    <VilleDepart>Ajaccio</VilleDepart>
    <VilleDestination>Avignon</VilleDestination>
    <HeureDepart>7h00</HeureDepart>
    <HeureArrivee>8h00</HeureArrivee>
    <Classe>3</Classe>
    <Prix>50</Prix>

    </vols>

    <vols>

    <Compagnie>Air France</Compagnie>
    <VilleDepart>Ajaccio</VilleDepart>
    <VilleDestination>Marseille</VilleDestination>
    <HeureDepart>7h00</HeureDepart>
    <HeureArrivee>8h00</HeureArrivee>
    <Classe>1</Classe>
    <Prix>150</Prix>

    </vols>

    <vols>

    <Compagnie>Air France</Compagnie>
    <VilleDepart>Toulouse</VilleDepart>
    <VilleDestination>Marseille</VilleDestination>
    <HeureDepart>7h00</HeureDepart>
    <HeureArrivee>8h00</HeureArrivee>
    <Classe>1</Classe>
    <Prix>150</Prix>

    </vols>

    </racine>
    J'ai ensuite un fichier xsl
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlnssl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes"/>

    <xsl:param name="field"/>
    <xsl:param name="order"/>
    <xsl:param name="val"/>
    <xsl:param name="par"/>

    <table>
    <xsl:choose>
    <xsl:when test="$par='VilleDepart'">
    <xsl:for-each select="vols[VilleDepart=$val]">
    <xsl:sort select="*[name()=$field]" data-type="number" order="{$order}"/>
    <tr height="30" class="ligne1">
    <td width="15%"><div class="petit"><xsl:value-of select="VilleDepart"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="VilleDestination"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="Compagnie"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="HeureDepart"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="HeureArrivee"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="Classe"/></div></td>
    <td width="10%"><div class="petitgras"><xsl:value-of select="Prix"/></div></td>
    </tr>
    </xsl:for-each>
    </xsl:when>
    <xsl:when test="$par='VilleDestination'">
    <xsl:for-each select="vols[VilleDestination=$val]">
    <xsl:sort select="*[name()=$field]" data-type="number" order="{$order}"/>
    <tr height="30" class="ligne1">
    <td width="15%"><div class="petit"><xsl:value-of select="VilleDepart"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="VilleDestination"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="Compagnie"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="HeureDepart"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="HeureArrivee"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="Classe"/></div></td>
    <td width="10%"><div class="petitgras"><xsl:value-of select="Prix"/></div></td>
    </tr>
    </xsl:for-each>
    </xsl:when>
    <xsl:otherwise>
    <xsl:if test="$val = ''">
    <xsl:for-each select="vols">
    <xsl:sort select="*[name()=$field]" order="{$order}"/>
    <tr height="30" class="ligne1">
    <td width="15%"><div class="petit"><xsl:value-of select="VilleDepart"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="VilleDestination"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="Compagnie"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="HeureDepart"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="HeureArrivee"/></div></td>
    <td width="15%"><div class="petit"><xsl:value-of select="Classe"/></div></td>
    <td width="10%"><div class="petitgras"><xsl:value-of select="Prix"/></div></td>
    </tr>
    </xsl:for-each>
    </xsl:if>
    </xsl:otherwise>
    </xsl:choose>
    </table>

    Voila dans mon formulaire quand je change la valeur de la ville de depart le resultat est bon malheureusement lorsque je modifie le deuxième formulaire (VIlle destination) il supprime le resultat anterieur pour m'afficher seulement le resultat de la ville de destination



    Et ma fonction modif dans mon index.html

    <table border=0 width=100% height=100% align=center valign=top>
    <tr>
    <td width=40% height=70% align=left valign=top>
    <div id="contenuBe">
    <script type="text/javascript">
    affichage('for_location.xml');
    </script>
    </div>
    </td>
    <td rowspan=2 width=60%>
    <table width=100% height=100% align=center valign=top border="0">
    <tr>
    <td width=100% height=100% valign=top>
    <div id="contenuMilieu">
    <script type="text/javascript">
    tri_init('location.xml','Type','ascending');
    </script>
    </div>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>



    et le formulaire :
    <form>
    <div class="ssTitreMiniBe">De:</div>
    <select name="VilleD" class="inputHPaeroport" onchange="modif(this.value ,'VilleDepart')">
    <option value="">Selectionner une ville de d&eacute;part
    <option value="Ajaccio">Ajaccio
    <option value="Avignon">Avignon
    <option value="Lille">Lille
    <option value="Lyon">Lyon
    <option value="Marseille">Marseille
    <option value="Montpellier">Montpellier
    <option value="Nantes">Nantes
    <option value="Nice">Nice
    <option value="Paris">Paris
    <option value="Toulouse">Toulouse
    </select>
    <br>
    <div class="ssTitreMiniBe">A:</div>
    <select name="VilleA" class="inputHPaeroport" onchange="modif(this.value ,'VilleDestination')">
    <option value="">Selectionner une ville d'arriv&eacute;e
    <option value="Ajaccio">Ajaccio
    <option value="Avignon">Avignons
    <option value="Lille">Lille
    <option value="Lyon">Lyon
    <option value="Marseille">Marseille
    <option value="Montpellier">Montpellier
    <option value="Nantes">Nantes
    <option value="Nice">Nice
    <option value="Paris">Paris
    <option value="Toulouse">Toulouse
    </select>
    <br>
    </form>

    Voila je selectionne la ville d'ajaccio dans la liste de depart et il m'indique toutes les vols ou la ville de depart est ajaccio
    Ensuite je modifie le formulaire de destination et je selectionne toulouse malheureusement la il m'affiche la liste ou les destination sont toulouse. (mais il ne considere plus les villes de depart qui sont egal a ajaccio)

    J'ai besoin d'aide :'(

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 15
    Points
    15
    Par défaut
    j'ai oublier de fournir la fonction javascript :

    <script language="javascript">
    var processor;
    var xslt;
    var xmlDoc;

    function tri(field,order) {
    processor.setParameter(null,"field", field);
    processor.setParameter(null,"order", order);
    var resultat = processor.transformToFragment(xmlDoc,document);
    document.getElementById('contenuMilieu').innerHTML = ""
    document.getElementById('contenuMilieu').appendChild(resultat);
    }

    function tri_init(val,field,order) {
    xslt= document.implementation.createDocument("", "", null);
    xslt.async=false;
    xslt.load('_xml/xslt-'+val);

    processor =new XSLTProcessor();
    processor.importStylesheet(xslt);
    xmlDoc= document.implementation.createDocument("", "", null);
    xmlDoc.async=false;
    xmlDoc.load('_xml/'+val);

    tri(field,order);
    }

    function modif(val,par) {
    processor.setParameter(null,"val", val);
    processor.setParameter(null,"par", par);
    var resultat = processor.transformToFragment(xmlDoc,document);
    document.getElementById('contenuMilieu').innerHTML = ""
    document.getElementById('contenuMilieu').appendChild(resultat);
    }

    </script>

  3. #3
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Tun'as pas l'air d'avoir de cible differentes(document.getElementById('contenuMilieu').) pour depart et destination ni deux variables (seulelemnt $par) pour le cas ou tu veux afficher depart et destination
    Je ne vois pas comment tu pourrais avoir les deux ?

Discussions similaires

  1. Parser sélectivement du XML (ou quelque chose y ressemblant) avec un JS
    Par BG29217 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 21/06/2013, 00h04
  2. Réponses: 6
    Dernier message: 18/09/2009, 09h35
  3. Réponses: 1
    Dernier message: 27/02/2008, 14h16
  4. [AJAX] Ajax avec un xml à balises imbriquées
    Par 4R416N33² dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/10/2007, 09h27
  5. [xslt] For-each dans template avec format XML (row)
    Par Steff1985 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/11/2005, 11h14

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