Bonjour,

Je suis débutant et je commence à découvrir le XSLT. Je suis entrain de transformer un fichier xml en un autre xml en utilisant xslt.

Dans mon fichier source j'ai quelque chose comme ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<ScalarVariable name="engine" valueReference="16780551" description="intake-exhaust coefficient" variability="parameter">
<Real min="0.0" max="20.0" start="6.18" fixed="true"/>
</ScalarVariable>
Je veux le transformer sous la forme suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Channel ident="engine" iRef="16780548" Repr="32">
    <Properties Description="intake-exhaust coefficient" InitValue="6.18" />
</Channel>
J'ai réussi à faire la transformation, sauf l'expression InitValue="6.18" qui correspond à start="6.18".

Mon xslt contient ce traitement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<xsl:for-each select="ScalarVariable">
	<xsl:if test = "Real[@start]">
 
 
		<Channel ident="{@name}" iBase="{@valueReference}" Repr="32">
		<xsl:value-of select="name"/>
		<xsl:value-of select="valueReference"/>
		<Properties Description="{@description}" InitValue="????????"/>
		<xsl:value-of select="description"/>
		</Channel>
	</xsl:if>
 
</xsl:for-each>
J'ai essayé plusieurs méthodes sans réussir. Je suis sûr que la solution n'est pas compliquée. J'ai appliqué un for-each pour parcourir les noeuds de type Real et extraire ma valeur start mais malheureusement dans ce cas je perds mes données qui sont sous ScalarVariable.

Une idée, un commentaire?

Merci par avance.