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

  FORUM HardWare.fr
  Programmation
  XML/XSL

  recuperer toutes les valeurs d'un meme type de noeud

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recuperer toutes les valeurs d'un meme type de noeud

n°1530533
gizmo
Posté le 19-03-2007 à 15:01:12  profilanswer
 

Bonjour bonsoir,
 
J'ai un xml qui a la gueule suivante:
 

<parent>
  <typeA>val 1</typeA>
  <typeC>val 2</typeC>
  <typeA>val 3</typeA>
  <typeB>val 4</typeB>
  <typeA>val 5</typeA>
  <typeC>val 6</typeC>
</parent>


 
Et au final, je devrais arriver a un truc qui aurrait la forme suivante:
 
typeA(3): val 1, val 3, val 5
typeB(1): val 4
typeC(2): val 2, val 6
 
le tout en xslt 1 (en 2, ce serait trop facile :o ) et en ne sachant pas a l'avance combien de type de noeud fils je pourrait avoir, ni leurs noms.
 
Quelqu'un aurait une idee? parce que la, je seche un peu... :??:

mood
Publicité
Posté le 19-03-2007 à 15:01:12  profilanswer
 

n°1531458
gizmo
Posté le 21-03-2007 à 10:25:15  profilanswer
 

:sweat:

n°1531688
MagicBuzz
Posté le 21-03-2007 à 15:54:28  profilanswer
 

tu charges ton xml dans un dataset .NET et tu fais un regroupement, avant de faire un export en XML puis une transformation xslt du résultat :D

n°1531694
gizmo
Posté le 21-03-2007 à 16:09:05  profilanswer
 

super, vla l'expert qui rapplique [:kiki]

n°1531695
MagicBuzz
Posté le 21-03-2007 à 16:09:48  profilanswer
 

c'est comme ça que tu me remercies de faire un up à ton topic tout pourri ? :o

n°1531700
MagicBuzz
Posté le 21-03-2007 à 16:12:57  profilanswer
 

pour info, ce que tu cherches à faire n'est pas conforme à la norme de toute façon.
 
un xslt, c'est fait pour transformer un fichier xml. un fichier xml, par définition, son schéma est connu, donc "ni leurs noms" n'a pas lieu d'être.
 
si tu dois transformer des fichiers xml dont la dtd peut varier, alors t'as qu'à faire varier de la même façon ton xslt :spamafote:
 
une fois de plus, structure et informations sont confondus, ça change pas des topics sgbd. finalement, je trouve mes repères ici.

n°1531704
nemohp
Adepte du provisoire permanent
Posté le 21-03-2007 à 16:15:35  profilanswer
 

MagicBuzz a écrit :


un xslt, c'est fait pour transformer un fichier xml. un fichier xml,


 
c'est nouveau ça ...

n°1531709
nemohp
Adepte du provisoire permanent
Posté le 21-03-2007 à 16:24:12  profilanswer
 

tu peux faire un SORT en XSLT pour trier déja, de mémoire ça doit donner un truc du genre (mais ça fait un moment que j'ai pas touché a XSLT)
 

Code :
  1. <xsl:template name="distinct">
  2. <xsl:for-each select="//parent//child()">
  3.      <xsl:sort select="name()" />
  4.   </xsl:for-each>
  5. </xsl:template>

n°1531931
gizmo
Posté le 22-03-2007 à 09:02:18  profilanswer
 

MagicBuzz a écrit :

pour info, ce que tu cherches à faire n'est pas conforme à la norme de toute façon.
 
un xslt, c'est fait pour transformer un fichier xml. un fichier xml, par définition, son schéma est connu, donc "ni leurs noms" n'a pas lieu d'être.
 
si tu dois transformer des fichiers xml dont la dtd peut varier, alors t'as qu'à faire varier de la même façon ton xslt :spamafote:
 
une fois de plus, structure et informations sont confondus, ça change pas des topics sgbd. finalement, je trouve mes repères ici.


En effet, ca ne change pas des topics sgdb, tu parles toujours de ce que tu ne connais pas...

n°1531933
gizmo
Posté le 22-03-2007 à 09:02:54  profilanswer
 

nemohp a écrit :

tu peux faire un SORT en XSLT pour trier déja, de mémoire ça doit donner un truc du genre (mais ça fait un moment que j'ai pas touché a XSLT)
 

Code :
  1. <xsl:template name="distinct">
  2. <xsl:for-each select="//parent//child()">
  3.      <xsl:sort select="name()" />
  4.   </xsl:for-each>
  5. </xsl:template>



Ca oui, je sais.  
Le probleme, c'est qu'apres, je ne vois aucun moyen de savoir combien de noeud de chaque type j'ai. En xslt2, j'ai le for-each-group qui me permet de faire un traitement super simplement, mais en 1.1, je ne vois pas du tout.

mood
Publicité
Posté le 22-03-2007 à 09:02:54  profilanswer
 

n°1532158
rufo
Pas me confondre avec Lycos!
Posté le 22-03-2007 à 14:06:38  profilanswer
 

<xsl:value-of select="count(NomDeTonNoeud)" /> ça marche pas en xslt 1?

n°1532177
gizmo
Posté le 22-03-2007 à 14:30:29  profilanswer
 

si, ca marche, mais uniquement quand je connais "NomDeTonNoeud" [:gizmo]

n°1532208
rufo
Pas me confondre avec Lycos!
Posté le 22-03-2007 à 15:14:50  profilanswer
 

Il me semble que si, tu peux le connaitre le nom du noeud via name()
Je pense qu'en combinant dans la boucle le tri sur name(), le count(name()) et un test when pour afficher qu'une fois le count() et les valeurs (le test étant du style "nom noeud courant == nom noeud précédent" ), ça devrait le faire, non?

n°1532254
gizmo
Posté le 22-03-2007 à 16:06:54  profilanswer
 

euh, peut-etre, en effet, je vais tester ca :jap:


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

  recuperer toutes les valeurs d'un meme type de noeud

 

Sujets relatifs
Récupérer le timestamp sous GNU pascal ET free pascaltrier le contenu de mon répertoire en fonction du type de fichier
Obtenir type Class à partir d'un String[wxWidgets] Récupérer toutes les touches enfoncées
recuperer le tableau affichage des données de mysql (dans easyphp) ?>>>survol d'un texte avec la souris<<<
récupérer des données de commandes unixProblème type "fatal error :Cannot instantiate..."
Comment récupérer les variables d'un capteur ?[PHP] Recupérer les 1er caracteres d'un mot
Plus de sujets relatifs à : recuperer toutes les valeurs d'un meme type de noeud


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