From: ELNIKOFF Thierry (thierry.elnikoff@caf02.be)
Date: 12/02/2003 - 07:33
Bonjour à tous et à toutes,
Je travaille sous environnement Windows, avec un programme VB qui utilise
l'API de MSXML.
Les documents manipulés sont tous des documents dont l'ID comporte la
référence à la version 4.0 (MSXML2.DOMDocument40)
Nous avons à gérer des messages au format XML, messages qui sont
indépendants (maximum 4 à 6 Ko par message). Toutefois, ces messages nous
sont transmis de manière encapsulée (un macro-message contenant autant de
sections CDATA qu'il n'y a de messages à gérer, chaque section CDATA
contenant, oeuf corse, un message XML).
Symptôme :
Lorsque je traite le macro-message, j'extrais le contenu des sections CDATA
et je m'en sert comme source de la fonction load du document XML. Si le
message est valide d'après son schéma, j'en examine certaines balises, qui
vont déterminer la suite du traitement et, accessoirement, l'emplacement
physique dans lequel le message sera enregistré.
Tout ceci fonctionne normalement (le document passe sans problème l'étape de
la validation), excepté qu'au chargement suivant du message (par un autre
application de la gestion), l'application en question mentionne que le
message n'est pas correct.
Après examen, il apparaît que :
- Le message transmis ne contient pas de clause de prologue "<?xml
version=...". Ceci ne pose pas de problème en soi puisque la norme ne
l'impose pas ("should" et non pas "must", dans le paragraphe adéquat).
- La balise principale, <Message...>, fait l'objet d'une définition au
niveau d'un schéma. Ce schéma est spécifié par l'attribut SchemaLocation. Le
problème est que cette définition, réalisée sur deux lignes, est polluée par
la séquence d'échappement en objet (
, représentant le '\n')
Mon analyse :
L'ajout de la mention <?xml ...?>, en dur dans le message d'origine (juste
après les différentes balises CDATA), ne change pas la donnée du problème.
L'émetteur du message utilise Java (Xerces, Xalan, etc) pour mettre en forme
le message (ceci étant confirmé par le fait que le document XML ne peut
contenir de "\" dans la spécification du nom de fichier dans le
schemaLocation).
A mon avis, l'espace de nom doit être défini en dur dans leur application
sous la forme "EspaceDeNom\nEmplacementPhysique"
Cette définition, étant donné qu'elle survient dans un noeud d'attribut,
n'est pas correctement géré lorsque je charge le document à partir du CDATA.
Existe-t-il quelque part une instruction particulière qui me permettrait de
résoudre mon problème, au niveau des propriétés des sections CDATA ????
J'ai déjà examiné le SDK de MS XML 4.0, mais je ne trouve rien.
N'aurais-je d'autre choix que la manipulation du noeud textuel ou du fichier
???
Merci d'avance, si vous avez déjà été confronté au problème, de me faire
part de vos observations...
Salutations,
Thierry Elnikoff
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (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 xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|