-
xml -> xsl -> xml
bonjour,
je cherche à lire un fichier xml ressemblant à :
<toto>
<titi>
<x>10</x>
</titi>
<tata>
<x>20</x>
<tutu>
<x>30</x>
</tutu>
</tata>
</toto>
dans le but de diminuer x de 5 à chaque fois.
Dans un premier temps j'ai écrit le code xsl suivant:
<xsl:template match="x">
<x><xsl:value-of select="number(.)-2560" /></x>
</xsl:template>
ce qui marche tres bien pour x, mais je perds tout le reste du document à cause des templates par defaults pour le reste.
J'ai alors utilisé le code suivant:
<xsl:template match="*">
<xsl:choose>
<xsl:when test="name()=x">
<x><xsl:value-of select="number(.)-2560" /> </x>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="." />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
dans ce cas je recupère tout le document xml sans changement car je ne vais pas lire assez en profondeur......
quelqu'un pourrait il me venir en aide?????
merci d'avance.
Virgile
-
ca me parait pas si mal ton truc, j'ai un peu oublie les details des fonctions, mais ca parait correct.
Une idee, utilise 'x' au lieu de x dans name()=x
Sinon, n'hesite pas a utiliser les tag code pour le code, ca facilite.
Bon courage.
-
Si tu veux parcourir le XML récursivement, il faut que tu réappelles ton template :
<xsl:apply-templates/> à la fin et là normalement, ca devrait marcher !
A+