Bonjour tout le monde, je débute dans XSLT et j'ai besoin d'un petit coup de main. J'ai fichier XML dans voici une petit partie:


<Part id="id14" name="2_Cylinder_Engine" instanceRefs="inst1779056 inst1913768 inst1910440 inst1937376" type="assembly">
</Part>
<Part id="id46" name="Head Stud:123-006;0,Parts" type="solid">
<Bound id="id49" values="-0.032626"></Bound>
<Representation id="id50" format="JT"></Representation></Part>


je veux avoir le résultat suivant:


<Part id="id14" name="2_Cylinder_Engine" instanceRefs="inst1912769" type="assembly">
</Part>


je sais comment faire pour copie:

<xsl:template match="//Part[@id='id14']">
<xsl:copy-of select="."/>
</xsl:template>


Mais je ne sais pas comment faire pour changer la valeur de l'attribue.
Modifié par aadari (19 Oct 2007 - 14:53)
Modérateur
Salut,

Un peu de patience tout de même... Ce n'est pas la peine de relancer au bout d'une demi-heure... Smiley cligne

Pour modifier ton attribut instanceRefs, tu peux faire comme ça :
	<xsl:template match="//Part[@id='id14']">
		<Part id="id14" name="2_Cylinder_Engine" type="assembly">
			<xsl:attribute name="instanceRefs">
				<xsl:text>inst1912769</xsl:text>
			</xsl:attribute>
		</Part>
	</xsl:template>
Smiley lol désolé.
Merci ça marche à merveil, mais juste pour que je comprend mieux, est ce qu'on aurait pas pu faire ça? pour éviter de recopier à la main:


<xsl:template match="//Part[@id='id14']">
		<xsl:copy-of select="."/>
			<xsl:attribute name="instanceRefs">
				<xsl:text>inst1912769</xsl:text>
			</xsl:attribute>
</xsl:template>
Modérateur
Salut,

En fait, sauf erreur, je crois bien que ce que je t'ai montré soit le plus simple pour la modification de ton attribut.

Pour que ça ressemble à la logique de ton dernier code, il faudrait que l'attribut puisse être défini dans le corps du xsl:copy-of mais ça n'est pas possible, un xsl:copy-of étant systématiquement un élément vide. Tu dois pouvoir le faire via un xsl:copy qui, lui, peut avoir un corps mais il me semble que ça va être plus lourd que ce que je t'ai mis vu qu'il faut rappeler tous les attributs. Smiley rolleyes
Modifié par koala64 (04 Oct 2007 - 14:15)