Re: Chargement DOM et attribut "xml:base"
[email protected] Wed, 09 Jan 2008 12:12:20 +0100
| Newsgroups | gmane.text.xml.french.tech |
|---|---|
| Message-ID | <[email protected]> |
> > J'essaye de construire un DOM avec Xerces (2.9.0) pour un document XML qui
> est
> > réparti dans plusieurs fichiers par le mécanisme des entités.
> >
> > La résolution de ces entités s'effectue bien, mais un attribut est rajouté
> > indiquant où se trouve le fichier (attribut xml:base).
> >
> > Est il possible de spécifier au loader de ne pas ajouter cet attribut ?
> J'ai
> > regardé les features de Xerces mais je n'ai rien trouvé dans ce sens.
>
> Il y a une description assez détaillée de ce problème à l'adresse :
>
> http://www.thescripts.com/forum/thread515291.html
>
> Il semblerait que la solution soit de donner à
> http://apache.org/xml/features/dom/create-entity-ref-nodes la valeur
> "false".
>
> Merci de nous le confirmer!
En fait pas vraiment !
Si on met cet attribut à FALSE, l'inclusion se fait en insérant dans le DOM le
noeud racine du document référencé par l'entité et on a l'attribut xml:base
indiquant la localisation de l'entité.
Si on met cet attribut à TRUE, l'inclusion se fait en insérant dans le DOM un
noeud ENTITY_REFERENCE_NODE contenant le noeud racine du document référencé par
l'entité. On a pas l'attribut xml:base, mais le noeud ENTITY_REFERENCE_NODE
contient le nom de l'entité.
Dans un cas comme dans l'autre ce comportement n'est pas celui que nous
souhaitons pour notre outil. Nous aurions aimé que le DOM chargé fasse
abstraction de la localisation et du nom des entités.
En fait j'avais déjà posé la même question sur la liste quelques jours avant les
vacances de noël et nous n'avions pas eu de réponse. Le lien vers la discussion
à propos de la validation indique qu'il vaut mieux utiliser XINCLUDE et c'est ce
que nous avions fait avant de partir en vacances. Cependant nous utilisons déjà
le mécanisme d'inclusion avec les entités pour d'autres parties du projet et
nous aurions aimé rester homogène.
De plus, je m'étonne que DOM ne permette pas de présenter une abstraction de la
localisation (et du nom) des entités. Mais si c'est pas possible, tant pis !
En tout cas, merci pour la réponse.
Xavier
PS.
Si le début du mail n'est pas clair, voici les traces du chargement d'un petit
document avec une inclusion par le mécanisme des entités en utilisant les deux
valeurs pour l'attribut
http://apache.org/xml/features/dom/create-entity-ref-nodes
Doc principal :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE noeud [
<!ENTITY subdoc SYSTEM "subdoc.xml">
]>
<subroot>
<node>titi</node>
<subnode>&subdoc;</subnode>
</subroot>
Doc inclu (subdoc.xml) :
<?xml version="1.0" encoding="UTF-8"?>
<subroot>
<node>tutu</node>
<node>tata</node>
</subroot>
Avec attribut TRUE :
[(type: ELEMENT_NODE), (uri: null), (name: subroot), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: node), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value: titi)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: subnode), (value: null)]
[(type: ENTITY_REFERENCE_NODE), (uri: null), (name: subdoc), (value:
null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: subroot), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: node), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
tutu)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: node), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
tata)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
Avec attribut à FALSE :
[(type: ELEMENT_NODE), (uri: null), (name: subroot), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: node), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value: titi)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: subnode), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: subroot), (value: null)]
[(type: ATTRIBUTE_NODE), (uri:
http://www.w3.org/XML/1998/namespace), (name: base), (value:
file:///W:/MISC/TEST_XML_1.4/test/subdoc.xml)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
file:///W:/MISC/TEST_XML_1.4/test/subdoc.xml)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: node), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value: tutu)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: ELEMENT_NODE), (uri: null), (name: node), (value: null)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value: tata)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
[(type: TEXT_NODE), (uri: null), (name: #text), (value:
)]
>
> Cordialement,
>
> Eric van der Vlist
>
> --
> GPG-PGP: 2A528005
> Le premier annuaire des apiculteurs 100% XML!
> http://apiculteurs.info/
> ------------------------------------------------------------------------
> Eric van der Vlist http://xmlfr.org http://dyomedea.com
> (ISO) RELAX NG ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
> (W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
> ------------------------------------------------------------------------
>
>
> -- Attached file included as plaintext by Ecartis --
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
>
> iD8DBQBHgfldDvn+ZCpSgAURArRqAJ0VV88STNb5Za+roHmmsP701AKB+ACfQyjB
> ZVvC/XwOxhv56fxZA/9pI/s=
> =UHJc
> -----END PGP SIGNATURE-----
>
>
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
> Liste de diffusion "[email protected]" (http://xmlfr.org).
>
> Cette liste est a votre disposition pour discuter en francais de
> tout sujet technique lie a XML.
>
> Pour resilier votre abonnement, envoyez un message contenant
> la commande "unsubscribe" a [email protected]
> (mailto:[email protected]?Subject=unsubscribe)
>
>