Utiliser le XML

Résolu
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007 - 27 nov. 2006 à 18:04
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007 - 29 nov. 2006 à 09:35
'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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
29 nov. 2006 à 09:29
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
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
28 nov. 2006 à 22:04
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
0
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007
29 nov. 2006 à 09:03
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>
0
slednet69 Messages postés 16 Date d'inscription mardi 14 octobre 2003 Statut Membre Dernière intervention 27 mars 2007
29 nov. 2006 à 09:35
rouuuu duuudiou !!! merci !
En plus je crois que c'est le deuxième fois que tu me débloques !!!
0
Rejoignez-nous