OVH Cloud OVH Cloud

Schema XML

3 réponses
Avatar
jean saint jalmes
Bonjour,

J'échange des requêtes XML avec un serveur HTTP.
Ces requêtes XML répondent à deux schémas XSD.

Existe-t'il sous VB6.0 un outil qui permette de vérifier que les requêtes
XML reçues sont conformes à un schéma XSD prédéfini ?

Si oui, lequel et comment l'utiliser à cette fin ?

En vous remerciant par avance;

Cordialement, Jean Saint Jalmes

3 réponses

Avatar
Fred
Dans : news:
jean saint jalmes écrit :
Bonjour,



Bonjour,

J'échange des requêtes XML avec un serveur HTTP.
Ces requêtes XML répondent à deux schémas XSD.

Existe-t'il sous VB6.0 un outil qui permette de vérifier que les
requêtes XML reçues sont conformes à un schéma XSD prédéfini ?




Sous VB6 non, mais il est possible de faire appel au composant MSXML
Il y a un exemple ici :
http://msdn.microsoft.com/library/en-us/xmlsdk/html/4b7d51a0-8fdc-4720-9f19-2063cca982f5.asp



--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
jean saint jalmes
Bonjour Fred et merci pour cette réponse très rapide.

J'ai immédiatement essayé cette méthode qui détecte bien les erreurs du type
"Balise de fin absente" etc.... mais qui ne semble pas détecter le non
respect du schéma.

J'ai volontairement supprimé un élément XML pourtant déclaré en "requiered"
dans le schéma et la méthode ne détecte pas cette erreur. De même, j'ai
modifié le type d'un attribut sans déclancher d'erreur.

Je précise que le schéma est défini dans le flux XML et que je l'ai aussi
défini comme l'indique la méthode proposée.

Aurais-je oublié quelque chose ? Ci-dessous le code du programme VB6.0

Function ValidateFile(strFile As String)
Dim x As New DOMDocument50
x.async = False
x.validateOnParse = True
x.resolveExternals = True
x.setProperty "SelectionLanguage", "XPath"
' ns = "xmlns:x='urn:book'" (exemple microsoft)
ns = "xmlns='urn:x-csrp:fr.csrp.protocole:enveloppe'"
x.setProperty "SelectionNamespaces", ns

x.Load strFile
If x.parseError.errorCode <> 0 Then
ValidateFile = "Validation failed on " & _
strFile & vbCrLf & _
"=====================" & vbCrLf & _
"Reason: " & x.parseError.reason & _
vbCrLf & "Source: " & _
x.parseError.srcText & _
vbCrLf & "Line: " & _
x.parseError.Line & vbCrLf
Else
ValidateFile = "Validation succeeded for " & _
strFile & vbCrLf & _
"======================" & _
vbCrLf & x.xml & vbCrLf
End If
End Function
Avatar
Fred
Dans : news:
jean saint jalmes écrit :

Bonjour Fred et merci pour cette réponse très rapide.

J'ai immédiatement essayé cette méthode qui détecte bien les erreurs
du type "Balise de fin absente" etc.... mais qui ne semble pas
détecter le non respect du schéma.



Il semble donc ne pas tenir compte du tout du schéma. Cette erreur est
détectable sans schéma.

Je précise que le schéma est défini dans le flux XML et que je l'ai
aussi défini comme l'indique la méthode proposée.



Je pense que l'erreur est là. Je t'ai donné un lien qui utilise un
schéma «externe»
Juste à côté de cet exemple, il y en a un autre qui conviendra mieux je
pense :
Validating with an Inline XSD Schema
http://msdn.microsoft.com/library/en-us/xmlsdk/html/16b39a4a-04bc-4970-b926-411c9d6bcc30.asp


Aurais-je oublié quelque chose ? Ci-dessous le code du programme VB6.0



Le code proposé fonctionne très bien si le fichier xsd est placé dans le
même répertoire que le fichier xml à analyser.
C'est juste mon choix de l'exemple qui n'était pas bon !

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT