Bonjour tout le monde
J'ai un petit souci avec XSL, voici mon fichier XML
Les ... signifie qu'il y'a plusieurs node personne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <repertoire> <personne id="1"> <nom pays="Belgique" ville="Yvoir">Dupont</nom> <prenom>Jean</prenom> <age jour="22" mois="06" annee="1978">29</age> </personne> ... </repertoire>
j'utilise PHP pour afficher le résultat, jusque là pas de souci, j'envoi 2 paramètre à mon XSL via PHP
et dans mon fichier XSL je voudrai donc effectuer un triage en fonction de ces 2 paramètre, pour les élément tel que nom,prenom,age pas de souci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if(isset($_GET['orderby'])){ $orderby = $_GET['orderby']; } else{ $orderby = 'nom'; } $xslt->setParameter('', 'orderby', $orderby ); if(isset($_GET['sens'])){ $sens = $_GET['sens']; } else{ $sens = 'ascending'; } $xslt->setParameter('', 'sens', $sens );
Mon problème est que pays,ville,jour,mois,annee sont des attribut et non des élément la logique voudrai donc que lorsque c'est pays/ville/jour/mois/annee il devrais faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <xsl:param name="orderby"/> <xsl:param name="sens"/> <xsl:template match="/"> <xsl:for-each select="repertoire/personne"> <xsl:sort select="*[name()=$orderby]" order="{$sens}"/> etc... </xsl:for-each> </xsl:template>
Mais je ne sais pas comment faire en sorte que si $orderby = nom ou prenom ou age alors il ne mette pas le @ et si $orderby = pays ou ville ou jour ou mois ou annee alors le @ ( pour spécifier attribut ) ce place
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <xsl:param name="orderby"/> <xsl:param name="sens"/> <xsl:template match="/"> <xsl:for-each select="repertoire/personne"> <xsl:sort select="*@[name()=$orderby]" order="{$sens}"/> etc... </xsl:for-each> </xsl:template>
Je sais pas si c'est clair ce que je raconte, sinon hésite pas à me le dire et j'essayerai de mieux détailler.
d'avance merci de votre aide
Partager