Transclusion : Document XML multi-fichiers

MéthodeRéutilisation et XML

La réutilisation par copie se fait en copiant un fragment XML depuis un fichier dans un autre fichier.

Mais pour la réutilisation par référence, il faut séparer le contenu au sein de plusieurs fichiers, pouvant alors se référencer par des mécanismes d'URI (la réutilisation étant induite du fait que plusieurs fichiers peuvent référencer le même fichier).

DéfinitionInternalisation

Fragment XML inclus dans le fichier l'utilisant. Le fragment n'est réutilisable que par copie.

1
<document>
2
    <fragment> ... </fragment>
3
</document>

DéfinitionExternalisation

Fragment XML référencé depuis le fichier l'utilisant ou le réutilisant. Le fragment est réutilisable par référence (et toujours pas copie).

1
<!--document.xml-->
2
<document>
3
    <fragment refUri="/chemin/fragment.xml"/>
4
</document>
1
<!--fragment.xml-->
2
<fragment>
3
    ...
4
</fragment>

DéfinitionModèle mixte (user dependant)

Il est possible d'autoriser un modèle mixte permettant alternativement les deux logiques (internalisée ou externalisée), au choix du producteur du fichier XML (on pourra parler d'externalisation user dependant.

ExempleChapitres internalisés

1
<!--document.xml-->
2
<document>
3
    <chap>
4
        <texte>Ceci est mon premier chapitre</texte>
5
    </chap>
6
    <chap>
7
        <texte>Ceci est mon second chapitre</texte>
8
    </chap>
9
</document>

ExempleChapitres externalisés

1
<!--document.xml-->
2
<document>
3
    <chapitre refUri="chap01.xml"/>
4
    <chapitre refUri="chap02.xml"/>
5
</document>
1
<!--chap01.xml-->
2
<chap>
3
    <texte>Ceci est mon premier chapitre</texte>
4
</chap>
1
<!--chap02.xml-->
2
<chap>
3
    <texte>Ceci est mon second chapitre</texte>
4
</chap>

ExempleChapitres "user dependent" (modèle mixte)

1
<!--document.xml-->
2
<document>
3
    <chapitre refUri="chap01.xml"/>
4
    <chap>
5
        <texte>Ceci est mon second chapitre</texte>
6
    </chap>
7
</document>
1
<!--chap01.xml-->
2
<chap>
3
    <texte>Ceci est mon premier chapitre</texte>
4
</chap>

FondamentalÉquivalence sémantique

L'internalisation ou l'externalisation ne sont que des représentation de gestion liées à la réutilisation, elles n'influencent par l'interprétation de la structure XML.

Ainsi les trois exemples précédents sont strictement équivalents et devront être traités de façon identique, lors d'une publication typiquement (on peut considérer que tous les fragments externalisés sont réinternalisés avant traitement, par exemple).

Remarque1 document = N fichiers

L'externalisation rompt la correspondance "traditionnelle" 1 document = 1 fichier.

Notons néanmoins que dans le cas de XML, le référencement de fichiers binaires, aura déjà, le cas cas échéant, rompu cette unité.

Remarque

  • Les schémas XML ne sont pas faits pour la validation d'un document XML multi-fichiers, il faut donc une mécanique complémentaire pour valider la structure d'un tel document.

  • L'externalisation multiplie les fichiers et complique la gestion informatique (gestion des renommages et déplacements des fragments par exemple) et humaine (complexité induite par la difficulté à appréhender un document dans sa totalité via ses fragments)

  • Le modèle mixte peut compliquer le travail du rédacteur (choix de gestion supplémentaire d'externaliser ou pas lors de la rédaction).

ComplémentRéutilisation par référence sans fragmentation (pointeur intra-fichier)

Il est possible de définir des pointeurs pointant à l'intérieur d'un document XML, en utilisant des mécaniques telle que XPath. Ainsi la syntaxe <fragment refUri="/chemin/fragment.xml" xPath="//element[1]"/> pointe le premier élément element du fichier fragment.xml.

Cette solution pose néanmoins de nombreux problèmes, qui la rende complexe à gérer :

  • La logique de réutilisation n'est pas formalisée a priori, tout élément peut pointer tout élément de tout fragment (tandis que la fragmentation spécifie les points possibles de réutilisation, par construction)

  • Les logiques de gestion sont beaucoup plus complexes (changement de structure du document XML avec pour conséquence l'invalidation d'un XPath par exemple)

  • ...