Tri dynamique xml sous firefox

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

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.