Bonjour,
Peut on avec une feuille de style fusionner plusieurs fichier XML.
Lire plusieurs XML (de structure différentes)
Merci
Bonjour,
Peut on avec une feuille de style fusionner plusieurs fichier XML.
Lire plusieurs XML (de structure différentes)
Merci
fonction document()
Merci pour la réponse
Mon fichier XML est composé (pour simplifier) :
Je voudrai inclure des données XML entre </ele1> et </racine>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE racine [ <!ENTITY im1 SYSTEM "img\im1.cgm" NDATA cgm> <!ENTITY im2 SYSTEM "img\im2.cgm" NDATA cgm> ]> <racine a="A" b="B"> <ele1> <ele2>xxxxxxxxxxxxxxxxxx</ele2> <ele2>yyyyyyyyyyyy</ele2> </ele1> </racine>
Mon code xsl :
Problèmes rencontrés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/racine"> <xsl:copy><xsl:apply-templates select="@*"/></xsl:copy> <xsl:apply-templates/> <xsl:copy-of select="document('xx.xml')"/> </xsl:template> <xsl:template match="@*|*|processing-instruction()|comment()|text()"> <xsl:copy> <xsl:apply-templates select="@*|*|processing-instruction()|comment()|text()"/> </xsl:copy> </xsl:template>
- Je perds le DOCTYPE et ses ENTITY
- Le fichier XML n'est pas bien balisé : absence </racine>
Merci pour l'aide
Pas grand-chose à y faire. Les DTD sont essentiellement obsolètes et XSLT ne les gère presque pas.
La seule solution serait de la réécrire dans la XSLT, avec échappement :
<xsl:copy> est fermé bien trop tôt. C'est lui qui ferme <racine>, je te le rappelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <xsl:template match="/"> <xsl:text disable-output-escaping="yes"><![CDATA[ <!DOCTYPE racine [ <!ENTITY im1 SYSTEM "img\im1.cgm" NDATA cgm> ]> ]]></xsl:text> <xsl:apply-templates/> </xsl:template>
merci
Je ne connais pas à l'avance le nombre d'entity ni le contenu
Il n'existe pas de solutions ?
Merci
Partager