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:
Je veux le transformer sous la forme suivante :
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>
J'ai réussi à faire la transformation, sauf l'expression InitValue="6.18" qui correspond à start="6.18".
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>
Mon xslt contient ce traitement :
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.
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>
Une idée, un commentaire?
Merci par avance.
Partager