2013-03-12 7 views
1

J'ai un fichier xml où les attributs d'un tag sont un src pour un autre fichier xml.Copier le contenu d'un fichier xml dans un autre fichier xml à l'aide de xslt

<a> 
    <b> 
     <c src="other1.xml" name="other1"></c> 
     <c src="other2.xml" name="other2"></c> 
     <c src="other3.xml" name="other3"></c> 
    </b> 
</a> 

Je souhaite modifier le contenu de ce fichier XML en suivant le format suivant

<a> 
    <b> 
     <other1> content of other1.xml </other1> 
     <other2> content of other2.xml </other2> 
     <other3> content of other3.xml </other3> 
    </b> 
</a> 

J'ai essayé d'utiliser xsl: variable et le stockage de valeur de src à l'intérieur mais je reçois l'erreur.

Quelqu'un s'il vous plaît suggérer une solution .... même des conseils seront appréciés

Répondre

3

Cela devrait le faire:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 

    <xsl:template match="@* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="c"> 
    <xsl:element name="{@name}"> 
     <xsl:apply-templates select="document(@src)" /> 
    </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

Avec les fichiers suivants comme other1.xml, other2.xml et other3.xml:

<I xmlns="hello"> 
    <am some="" xml="" /> 
</I> 


<I xmlns="hello"> 
    <amAlso xml="" /> 
</I> 


<I> 
    <am xml="as well" /> 
</I> 

Et fonctionner avec votre XML exemple en entrée, le résultat est:

<a> 
    <b> 
    <other1> 
     <I xmlns="hello"> 
     <am some="" xml="" /> 
     </I> 
    </other1> 
    <other2> 
     <I xmlns="hello"> 
     <amAlso xml="" /> 
     </I> 
    </other2> 
    <other3> 
     <I> 
     <am xml="as well" /> 
     </I> 
    </other3> 
    </b> 
</a> 
+0

merci pour l'aide :) – abhijeet

Questions connexes