2013-05-01 4 views
0

Ma question est simple, comment puis-je insérer des données, en utilisant XSLT, dans une balise d'élément que j'ai créée dans mon XSLT?Comment ajouter des données aux éléments créés dans XSLT

Par exemple, j'utilisé cette option pour créer mon élément:

<xsl:template match="VEHICLE"> 
    <xsl:element name="{@STATUS}"> 
    <xsl:apply-templates/> 
    </xsl:element> 
</xsl:template> 

structure XML: (entrée)

<cars> 
    <VEHICLE> 
    <MODEL>FORD</MODEL> 
    //other elements here 
    </VEHICLE> 
    <VEHICLE> 
    <MODEL>DODGE</MODEL> 
    //other elements here 
    </VEHICLE>  
</cars> 

(sortie désiré)

<cars> 
     <VEHICLE> 
     <MODEL>FORD</MODEL> 
     <STATUS>SOLD</STATUS> 
     //other elements here 
     </VEHICLE> 
     <VEHICLE> 
     <MODEL>DODGE</MODEL> 
     <STATUS>AVAILABLE</STATUS> 
     //other elements here 
     </VEHICLE> 
</cars> 
+0

S'il vous plaît clairement comment votre sortie xml d'entrée sera/sh ould ressembler. Je suppose que le fichier XML ci-dessus est votre sortie et la valeur de @STATUS est MODEL. Mais que vos "autres éléments" ne sont pas inclus dans le nouvel élément. –

+0

FYI, dans l'entrée XML, la balise d'ouverture '' ne correspond pas à la balise de fermeture ''. –

Répondre

1

Vous pouvez ajouter un élément <foo/> comme ceci:

<xsl:template match="VEHICLE"> 
    <xsl:element name="{@STATUS}"> 
    <xsl:apply-templates/> 
    <foo/> 
    </xsl:element> 
</xsl:template> 
+0

Pour être honnête, je ne comprends pas vraiment ce que tu veux dire. Pourriez-vous s'il vous plaît expliquer plus loin? – user1991372

+0

Cela va ajouter '' à votre sortie. Peut-être que si vous montrez ce que vous voulez, je pourrais vous donner une réponse plus précise. –

+0

Ok, je peux certainement le faire. En ajoutant , faites-vous référence à un nouvel élément ou aux données à l'intérieur de l'élément? J'espère que cela aidera à clarifier ma question. Je viens de mettre à jour pour donner ma sortie, est-ce que ça aide? – user1991372

0

Dans votre document d'entrée j'ai changé //other elements here en <!--//other elements here--> mais à part cela, cette transformation donne le résultat que vous voulez;

Entrée

<cars> 
    <VEHICLE> 
    <MODEL>FORD</MODEL> 
    <!--//other elements here--> 
    </VEHICLE> 
    <VEHICLE> 
    <MODEL>DODGE</MODEL> 
    <!--//other elements here--> 
    </VEHICLE>  
</cars> 

Transform

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="cars"> 
    <cars> 
     <xsl:apply-templates/> 
    </cars> 
    </xsl:template> 

    <xsl:template match="VEHICLE"> 
    <VEHICLE> 
     <xsl:if test="MODEL = 'FORD'"> 
     <STATUS>SOLD</STATUS> 
     </xsl:if> 
     <xsl:if test="MODEL = 'DODGE'"> 
     <STATUS>AVAILABLE</STATUS> 
     </xsl:if> 
     <xsl:copy-of select="node()"/> 
    </VEHICLE> 
    </xsl:template> 

</xsl:transform> 

Résultat

<cars> 
    <VEHICLE> 
    <STATUS>SOLD</STATUS> 
    <MODEL>FORD</MODEL> 
    <!--//other elements here--> 
    </VEHICLE> 
    <VEHICLE> 
    <STATUS>AVAILABLE</STATUS> 
    <MODEL>DODGE</MODEL> 
    <!--//other elements here --> 
    </VEHICLE> 
</cars>  
Questions connexes