From: ELNIKOFF Thierry (thierry.elnikoff@caf02.be)
Date: 17/12/2002 - 13:07
Bonjour à tous, bonjour à toutes...
Je fais appel à votre savoir, et à votre bon coeur.
Non pas pour financer une greffe de cuir chevelu... [Qu'est ce que ca a à
voir avec le XML, ca ?]
Quoique, avec ce que je me suis arraché sur la tête durant ces dernières
heures, ca ne serait peut-être pas du superflu.
Car voilà, comme d'habitude quand on lance un appel [désespéré] sur une
liste, je suis confronté à un problème...
Venons-en au fait... Je dois développer, sous VB, avec MSXML4, une
application permettant d'analyser un fichier XML provenant de l'extérieur de
notre SI. Ce fichier est décrit par un schéma. Ce schéma est associé à un
namespace, sous la forme "http://bidule.machin.truc/Rep/SsRep/SsSsRep".
Voici un extrait :
<RootElem xmlns="http://Bidule.Machin.truc/Rep"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Bidule.Machin.truc/Rep
X:\Bidule\Truc\Rep\Glob.xsd">
Dès lors, vu que chez nous, nous travaillons avec une copie locale des xsd
(on n'a pas envie d'aller récupérer les xsd à chaque fois à travers le
réseau, vous voyez...), on a mis en place le bout de code permettant de
réaliser la validation du fichier xml, en tenant compte de cette
délocalisation des schémas.
Dim XMLDoc As MSXML2.DOMDocument40 'Autre que 40, ca marche pas pour les
schémas...
Dim XMLSchemaCache As New MSXML2.XMLSchemaCache40
XMLSchemaCache.Add "http://Bidule.Machin.truc/Rep",
"C:\blabla\bidule\machin.xsd"
Set XMLDoc = New MSXML2.DOMDocument40
Set XMLDoc.schemas = XMLSchemaCache
XMLDoc.async = False
If Not XMLDoc.Load(FileName) Then
'Fichier non conforme
End If
Ca, ca marche très bien...
Le problème, c'est que je ne parviens pas à utiliser l'instruction
selectSingleNode dans les instructions qui suivent le load... J'ai bien mis
le SelectLanguage sur XPath, mais ca ne veut pas fonctionner.
Le plus étrange, c'est que selectSingleNode("/").text me donne l'ensemble de
mon document (y compris le "<?xml ... ?>")
Mais dès que je veux lire le noeud principal, que je fasse "RootElem",
"/RootElem" ou "//RootElem", ca m'envoie sur les roses et la fonction me
retourne un "Nothing" du plus mauvais effet...
Est-ce que quelqu'un aurait une piste à me proposer ? Le SDK de MS est assez
succinct à ce propos (ou alors, c'est que j'ai mal lu...)
Merci d'avance pour votre aide.....
Thierry Elnikoff
P.S. : Le document est valide, il n'y a aucune erreur lors du chargement...
--
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
|