Tri dynamique xml sous firefox

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 146 fois - Téléchargée 26 fois

Contenu du snippet

Voilà, on voit souvent l'accès a un code de tri pour IE avec des objets ActiveX , mais ils ne fonctionnent pas sous Firefox. Mon code est donc un tri dynamique a partir d'un feuille XML et XSLT qui fonctionne sous Firefox.

Source / Exemple :


PAGE HTML

<html>
   <head>
      <script type="text/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.body.innerHTML = ""
                    document.body.appendChild(resultat);
                }

                function tri_init(field,order) {
                    xslt= document.implementation.createDocument("", "", null);
                    xslt.async=false;
                    xslt.load("test-xslt.xml");
    
                    processor =new XSLTProcessor();
                    processor.importStylesheet(xslt);
                    xmlDoc= document.implementation.createDocument("", "", null);
                    xmlDoc.async=false;
                    xmlDoc.load("test.xml");
    
                                tri(field,order);
                }
      </script>
   </head>
   <body>
      <script type="text/javascript">
        tri_init('name', 'ascending');
      </script>
   </body>
</html>

FEUILLE DE STYLE XSLT :test-xslt.xml

<?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:variable name="neworder">
          <xsl:if test="$order='ascending'">descending</xsl:if>
          <xsl:if test="$order='descending'">ascending</xsl:if>
         </xsl:variable>

           <tr><th><a href="javascript:tri('name','{$neworder}')">name</a></th><th><a href="javascript:tri('phone','{$neworder}')">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>

FEUILLE XML: test.xml

<?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>

Conclusion :


Merci pour votre lecture.
Allez visiter ma page web http://stela86.free.fr

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
lundi 14 mars 2005
Statut
Membre
Dernière intervention
23 juin 2007

ton code est super mais je cherche une technique universel pour faire exactement ce que fais ton code, universelle c n'est pas seulement FF ou IE mais aussi opera et KHTML.
C'est ce qui est relou avec le JS, le résultat est différant sur chaque navigateur
Messages postés
16
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2009

Salut ! j'ai testé ton code sous firefox sur pc et sa marche très bien ! par contre sa ne marche plus du tout sous mac..... :(
Messages postés
144
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
1 septembre 2008

Hello j'ai essayé de faire fonctionner ton code sur FF version 1.5.02 et cela ne marche pas !!! Avez-vous une idée ?
Messages postés
84
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
12 juin 2006

L'idee est excellente et je suis content que quelqu'un pense enfin a utiliser xsl pour faire des tri dynamique ... et ca marche vraiment bien avec FF... maintenant on te reprochera de ne faire le tri que pour FF et pas IE.

Je pense que ce serais donc bien d'essayer d'integrer les activeX de IE pour gerer le xsl...
(meme si je suis 100% FF)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.