remplacer un noeud XSL - XML/XSL - Programmation
Marsh Posté le 08-03-2005 à 22:28:44
le prochain coup utilise les balises [ fixed] ... [ /fixed] (sans les espaces) pour entourer ton code, parce qu'avec des smiley à la place du texte c'est illisible (là je l'ai fait à ta place)
Marsh Posté le 09-03-2005 à 00:49:24
chez moi, match="//ns0:image//xsl:value-of/@select" ca fonctionne :
XML
|
XSL
|
OUT
|
Marsh Posté le 09-03-2005 à 12:11:35
Effectivement ceci fonctionne, je doit donc avoir un problème de xpath.
J'ai modifier ton xsl en ceci :
XSL
|
et j'obtient bien le résultat voulu à savoir remplacer le value-of par un copy of.
Mais si je rajoute le tag stylesheet dans mon document source, le transformateur XSL ne passe plus dans le template //ns0: ...
XML
|
Peux me dire ou est ce que je me loupe ?
Merci beaucoup
Marsh Posté le 09-03-2005 à 12:40:22
c'est parce que les namspace de tes 2 documents ne correspondent plus : faut que tu mettes la bonne uri pour le prefix ns0 dans ta XSL. dis toi que les prefix c'est juste un raccourcit pour ne pas avoir à écrire l'uri complète => quand tu matches ns0:image, en fait tu matches le tag 'image' du namespace correspondant au prefix ns0 c'est à dire 'toto' (c'est défini comme ca dans l'url que je t'ai filé), hors dans ton document xml, le tag image est dans le namespace "schemas-MSWordXmlToolbox#03022005-162442" => ca matche pas ...
Marsh Posté le 09-03-2005 à 14:21:10
Houla oui, autant pour moi, dans leuphorie javais oublier cela.
Merci beaucoup.
Marsh Posté le 08-03-2005 à 16:03:47
Bonjour à tous,
Je cherche à modifier une transformation XSL, par une autre transformation XSL dans le but précis de modifier un noeud particulier.
Je souhaite en fait remplacer un <xsl:value-of select="."/> par un <xsl:copy-of select=".//*"/>
le problème c'est que je n'arrive pas à atteindre correctement mon xsl:value-of.
Voila la partie de mon XSL que je veux modifier :
<xsl:template match="/ns0:root/ns0:image">
<ns0:image>
<xsl:for-each select="@ns0:*|@*[namespace-uri()='']">
<xsl:attribute name="{name()}" namespace="{namespace-uri()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:for-each>
<w:p>
<w:pPr>
<w:ind w:hanging="1080" />
</w:pPr>
<w:r>
<w:t>
<xsl:value-of select="." />
</w:t>
</w:r>
</w:p>
</ns0:image>
</xsl:template>
et la partie de mon xsl qui devrait le modifier qui ne marche pas:
<xsll:template match="//ns0:image//xsl:value-of/@select">
LL
</xsll:template>
alors que
<xsll:template match="//ns0:image//@select">
LL
</xsll:template>
me remplace bien la valeur par LL
Ma question est :
comment puis je transformer mes 2 <xsl:value-of select="." />
par mon <xsl:copy-of select=".//*"/> ?
Merci d'avance
Message édité par llasserre le 08-03-2005 à 22:27:39