Utiliser le XML [Résolu]

Signaler
Messages postés
16
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
27 mars 2007
-
Messages postés
16
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
27 mars 2007
-
'lut

Alors voici mon problème ou du moins mon interrogation....

J'ai un doc XML qui ressemble à çà :
<?

xml version="1.0" encoding="utf-8"?>

<MonXml id="0">

   <zozo id="00"
   <toto id="01"  />

   

</MonXml>

Je bind ce fichier à un Treeview, pas de problème.
Le seul hic c'est le tris car j'aimerai avoir un tris alphabétique par nom d'élément.
<MonXml id="0">
   <albert id="02" />
   <toto id="01"  />
   <zozo id="00"/>

</MonXml>

J'ai crus comprendre que le XSL serait peut-être la solution mais je ne vois pas comment et surtout si c'est faisable du fait que mes noms d'éléments sont différents.....

Donc ma question est : est-ce faisable et quelles sont les orientations à prendre ?!

Merci !!!

4 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
XSLT permet de convertir un document XML en un autre type de document (généralement du XML) le treeview va se servir du résultat de la transformation, hors toi c'est tout vide :)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:for-each select="MonXml">
      <xsl:sort select="@name" order="ascending" data-type="text"/>
      <xsl:element name="monXML">
         <xsl:value-of select="@name" />
      </xsl:element>
   </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

Ensuite il te reste plus qu'a modifier le binding du treeview pour prendre en compte les elements que tu veux avec une requete XPath (c'est pas obligatoire mais je pense que ce sera nécessaire)

<hr />Cyril - MVS - MCP
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonsoir, XSLT semble la meilleure solution tu peux utiliser pour cela la balise xsl:sort mais je ne suis pas sur du tout que tu puisse trier par nom d'element tu peux pas utiliser un attribut plutot qu'un nom de balise ? ca permettra beaucoup de chose et ce sera plus conforme à l'utilisation de XML ...

<hr />Cyril - MVS - MCP
Messages postés
16
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
27 mars 2007

Bo vi c'est sur quoi je me suis orienté, mais les composant treeview comme datalist n'ont pas l'air d'apprécier....

je résume ce que je fais (c'est à dire pas grand chose....)
J'écris dans un XML en fonction des choix de l'utilisateur.
Je lui affiche le fichier en cours d'édition sous forme d'arborescence avec le treeview.
Le problème est que a chaque ajout de nouvel élément ces derniers ce suivent sans aucun tris alpha. Donc je me suis dit que la propriété "TransformFile" du treeview doit résoudre au niveau affichage ce petit problème de tris. Là je vois que cette propriété attend  un fichier XSL. Je vais donc à la pêche aux infos sur le web.
Je trouve des "ForEach" qui ne me convienne pas puisque c'est directement pour piloter côter HTML le rendu, hors moi je file juste le fichier XSL au treeview, donc je ne sais pas quoi lui écrire comme info.
J'ai par la suite trouvé comme tu dis le "sort" qui porte un joli nom.....
Bref ma dernière tentative resemble à çà et çà ne marche tjs pas

un fichier XML du style : ************************
<MonXml id="00" name"toto" />
<MonXml id="01" name"albert" />
<MonXml id="03" name"joe" />

le fichier XSL************************
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <xsl:for-each select="MonXml">
      <xsl:sort select="@name" order="ascending" data-type="text"/>
   </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
Messages postés
16
Date d'inscription
mardi 14 octobre 2003
Statut
Membre
Dernière intervention
27 mars 2007

rouuuu duuudiou !!! merci !
En plus je crois que c'est le deuxième fois que tu me débloques !!!