transformation xml par xslt - XML/XSL - Programmation
Marsh Posté le 03-06-2005 à 11:56:18
Il y a une fonction name() dans xpath qui te permet de récupérer le nom des balises...
Marsh Posté le 03-06-2005 à 14:59:45
Je dirais même plus...
<xsl:value-of select="name()" /> |
Marsh Posté le 03-06-2005 à 15:00:21
j'ai essayé cela mais ça ne fonctionne pas:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="eleve">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="e01a">
<xsl:for-each select="*">
<xsl:attribute name="{name()}">
</xsl:attribute>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Marsh Posté le 03-06-2005 à 15:04:37
Même résultat avec:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="eleve">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="e01a">
<xsl:value-of select="name()" />
</xsl:template>
</xsl:stylesheet>
Marsh Posté le 03-06-2005 à 18:26:08
J'ai nessayé avec ça aussi mais je n'obtient plus rien:
<xsl:template match="/">
<xsl:for-each select="eleve/e01a">
<xsl:for-each select="*"/>
<xsl:value-of select="name()"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
Marsh Posté le 05-06-2005 à 15:02:05
Le stylesheet:
<?xml version="1.0" encoding="ISO-8859-1"?> |
le résultat:
eleve ex1 ex2 profil |
j'ai gagné quoi?
Marsh Posté le 05-06-2005 à 16:19:05
Ca fonctionne sur le xml donné je vais essayer de le généralisé à un autre fichier contenant plus de données.
Merci beaucoup.
Si ce n'est pas trop abusé, comment puis-je générer mon retour à la ligne?
Marsh Posté le 05-06-2005 à 22:05:40
J'avais pourtant mis des commentaires ( voir entre les balises <!-- ... --> )...
|
Le retour à la ligne est génére comme si dessus, il faut l'encoder texto, on ne le voit pas mais après la première balise xsl:text tu fais un [enter], puis directement refermer la balise.
Si tu as un editeur de code, active le mode qui te permet de voir les retours à la ligne, les tabulations etc..., tu verras que xsl:text contient bien un retour à la ligne.
Marsh Posté le 06-06-2005 à 17:18:56
J'ai beau mettre les deux balises avoir un enter comme indiqué, lorsque le fichier est lu sous IE, il n'y a pas de retour à la ligne.
Marsh Posté le 06-06-2005 à 17:23:12
A quel programme fais-tu appel pour visualiser le résultat?
Marsh Posté le 06-06-2005 à 19:42:43
J'utilise MSXSL.EXE un utilitaire en ligne de commande qui fait appel à MSXML 4.0.
Le résultat est un fichier texte donc un éditeur de code, voir le bon vieux notepad...
Marsh Posté le 06-06-2005 à 20:25:28
En fait je visualise le résultat sous internet explorer mais mon but est de transformer un fichier xml en un fichier arff exploitatable par le logiciel weka; C'est pour cela que j'aimerais faire des retours à la ligne puis trouver un moyen pour automatiser XML--XSLT-->TXT---rename-->ARFF
Marsh Posté le 03-06-2005 à 11:35:37
Bonjour, je voudrai transformer un fichier xml comprenant des lignes du type:
<eleve>
<profil>4</profil>
<ex1>
<t1>1</t1>
<m1>1</m1>
</ex1>
<ex2>
<t3>1</t3>
<c2>1</c2>
</ex2>
</eleve>
<eleve>
<profil>3</profil>
<ex1>
<t0></t0>
</ex1>
<ex2>
<t1>1</t1>
<c2>1</c2>
</ex2>
</eleve>
en un fichier .txt du type:
ex1 ex2 profil
t1m1 t3c2 4
t0 t1c2 3
grâce à xslt. Mon problème est que j'ai du mal a récuper t1m1, t3c2,t0 et t1c2 sous cette forme.