Bonjour,
Peut on avec une feuille de style fusionner plusieurs fichier XML.
Lire plusieurs XML (de structure différentes)
Merci
Version imprimable
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:
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:
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:
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
Pas en XSLT en tout cas.
On pourrait imaginer un bricolage mi-SAX mi-XSLT, pour confier à chacun la tâche qu'il fait le mieux, mais ça commence à être compliqué.