Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1048 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  XSL : Trie spécifique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

XSL : Trie spécifique

n°1120346
joey_joe
Posté le 15-06-2005 à 09:52:14  profilanswer
 

   Bonjour,
 
Voilà, j'ai un XML du type :
<info>
  <nom>...</nom>
  <date>05/09/2005</date>
</info>
<info>
  <nom>...
  <date>08/09/2005</date>
</info>
<info>
  <nom>...
  <date>cloturée</date>
</info>
...
 
Voilà, j'aimerai trier mes dates en ordre décroissant, pour obtenir l'ordre :  
       08/09/2005  
       05/09/2005  
       cloturée
 
Le problème est que quand je trie par date de cet facon :
       <xsl:sort select="substring(date,7,4)" order="descending"/> <!-- year  -->
       <xsl:sort select="substring(date,4,2)" order="descending"/> <!-- month -->
       <xsl:sort select="substring(date,1,2)" order="descending"/> <!-- day   -->  
 
j'obtient :
       cloturée
       08/09/2005
       05/09/2005
 
Merci de m'aiguiller, ...
 
                     Tchoo, Joey

mood
Publicité
Posté le 15-06-2005 à 09:52:14  profilanswer
 

n°1120355
joey_joe
Posté le 15-06-2005 à 09:58:27  profilanswer
 

Personne n'a une petite idée ???

n°1120374
joey_joe
Posté le 15-06-2005 à 10:15:11  profilanswer
 

J'ai vu qu'il existe des regroupements ? Ce serait peut etre une possibilite ????
 
Comment ca marche ???
 
MERCI ENCORE

n°1120438
avander
Posté le 15-06-2005 à 10:39:03  profilanswer
 

Je pense que le problème c'est le contenu pas très orthodoxe de ta balise date...  
 
dans une base de données traditionnelle un champ est soit du caractère soit du numérique, ici ton substring va au mieux être évalué comme étant 0 donc les dates cloturées passent avant les autres...
 
Perso je solutionnerais le problème en faisant deux selections parmis les dates, les non cloturées qu'on va trier et les cloturées dont ont se fiche royalement!
 

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<root>
<info>
  <nom>nom1</nom>
  <date>05/09/2005</date>
</info>
<info>
  <nom>nom2</nom>
  <date>08/09/2005</date>
</info>
<info>
  <nom>nom3</nom>
  <date>cloturée</date>
</info>  
</root>
<!-- eof -->


 
et le stylesheet

<?xml version="1.0" encoding="ISO-8859-1"?>
 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<xsl:output encoding="iso-8859-1" method="text" omit-xml-declaration="yes" indent="yes"/>  
 
<xsl:template match="/">
  <xsl:apply-templates select="//info[ date != 'cloturée']">
    <xsl:sort  
      select="concat( substring( date,7,4), substring( date,4,2), substring( date,1,2))"  
      order="descending"
    />
  </xsl:apply-templates>
  <xsl:apply-templates select="//info[ date = 'cloturée']">
  </xsl:apply-templates>
</xsl:template>  
 
<xsl:template match="info">
  <xsl:value-of select="date" />  
  <xsl:text> </xsl:text>
  <xsl:value-of select="nom" />  
  <xsl:text>
</xsl:text>
</xsl:template>  
 
</xsl:stylesheet>  
<!-- eof -->


 
J'ai pas creusé mais il y a aussi moyen de faire des tri à l'aide d'xsl:key ( c'est une sorte d'index qu'on définit sur le xml, c'est utile pour de gros tri où une utilisation fréquente). Apparemment vu la taille du problème le xsl:sort suffit largement, il ne va pénaliser les temps d'exécutions.
 
 :jap:


Message édité par avander le 15-06-2005 à 10:40:45
n°1120475
joey_joe
Posté le 15-06-2005 à 10:54:31  profilanswer
 

Merci...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  XSL : Trie spécifique

 

Sujets relatifs
Différence MagpieRSS et XSL ?cherche script qui met date spécifique
XSL Probleme pour mettre deux tableaux cote a cote[XML/XSL] Template, besoin d'aide ...
[RESOLU][XSL]Creer un variable pour mettre un width="" pour un table[RESOLU][XSL/JavaScript]problème d'intégration code JS dans le XSL
[XSL] Problème de base !trie à bulle
[XSL] add attribute into existing XML 
Plus de sujets relatifs à : XSL : Trie spécifique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR