IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Valider XML Discussion :

[XSD]Valider un fichier XML et son schéma


Sujet :

Valider XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut [XSD]Valider un fichier XML et son schéma
    Rebonjour, les XMaéliens

    Y a un truc qui me dérange avec les sources* (Java, PHP, VBS, ...) qui valident les schémas XML : ils ne font pas la liaison avec le fichier XML, dans le sens où si je modifie mon fichier XML de manière à ce qu'il ne soit plus conforme avec mon schéma, les validateurs de schémas ne diront rien. Les scripts diront juste votre schéma est "OK", mais il ne dira pas par exemple : "Attention ! Vos données de votre fichier XML ne sont plus conformes avec votre schéma" comme je l'ai expliqué ICI

    Je sais que des logiciels comme XML Notepad 2007 font cette liaision "fichier XML et son schéma".

    Alors ma question est toute simple : dans les programmes que l'on développe (en Java, VB.Net, etc.) faut-il écrire son bout de programme pour arriver à ce que ces derniers arrivent à dire "Ohh là là, vilain garçon, vos données XML ne correspondent pas à votre schéma ! Attention veuillez modifier votre fichier XML sous peine de "

    ... car comme dit dans mon 1er paragraphe, les sources suivantes ne le font pas (je ne les ai pas toutes essayées) :
    sources*

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par _Fabien
    Rebonjour, les XMaéliens

    Y a un truc qui me dérange avec les sources* (Java, PHP, VBS, ...) qui valident les schémas XML : ils ne font pas la liaison avec le fichier XML, dans le sens où si je modifie mon fichier XML de manière à ce qu'il ne soit plus conforme avec mon schéma, les validateurs de schémas ne diront rien. Les scripts diront juste votre schéma est "OK", mais il ne dira pas par exemple : "Attention ! Vos données de votre fichier XML ne sont plus conformes avec votre schéma" comme je l'ai expliqué ICI
    Tu veux dire qu'apres avoir fait un premier test, tu modifie tes données sans retester
    On peut "lier" dans certains langage un xml à un schema ,mais l'intérêt est faible puisque si le xml n'est pas valide il devient inutilisable et qu'on ne peut donc le corriger via le programme.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Erwy
    Tu veux dire qu'apres avoir fait un premier test, tu modifie tes données sans retester
    Avec "retestage" ou sans, les scripts VBS et autres disent que mon schéma est valide même si les données du fichier XML ont été changées.

    Par contre avec XML notepad 2007, après avoir chargé mon schéma XML et le fichier XML, si je change les données de ce dernier, notepad m'avertit tout de suite si les données changées ne sont pas conforme au schéma, ce que ne font pas les scripts, qui se contentent seulement de vérifier si le schéma XML est bon .

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Il y a une différence entre vérifier la validité d'un XSD est celui d'un XML quelconque.

    Un XSD étant un XML comme un autre, tu peux tout à fait le valider. Es-tu totalement sûr que tu utilises le script correctement et que tu ne valides pas le XSD au lieu du XML ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Swoög
    Es-tu totalement sûr que tu utilises le script correctement et que tu ne valides pas le XSD au lieu du XML ?
    C'est cela. Il valide uniqument le fichier XSD à partir du squelette/de la structure du fichier XML. Et j'aimerais le contraire : qu'il valide le fichier XML à partir du fichier XSD, mais mon code est dans l'autre post : ICI

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Je ne sais pas si je me suis fait comprendre complètement ?

    Reprenons mon exemple que j'ai donné dans l'autre post :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0"?>
    <!-- element_racine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd" -->
    <element_racine xmlns:xsi="schema.xsd">
      <nombre>55</nombre>
      <nombre>90</nombre>
      <nombre>80</nombre>
      <nombre>99</nombre>
    </element_racine>
    Le schema.xsd exige que chaque nombre soit compris entre 50 et 100.

    Si je demande à 50 personnes (ok j'exagère, quoique si c'était des fiches clients) de me faire chacun un fichier XML du même type que celui du dessus, j'aurais aimé que les scripts qui valident le schéma XML, le fassent aussi pour les fichiers XML associés. Car comment je vais savoir si les 50 fichiers XML sont valides, sinon en les examinant un par un à la main ?

    Ainsi en rajoutant une boucle dans les scripts de validation, j'aurais aimé un truc de ce genre :

    fichier01.xml conforme au schéma XML associé (schema.xsd).
    fichier02.xml conforme au schéma XML associé (schema.xsd).
    (...)
    fichier28.xml non conforme à schema.xsd. Erreur : ligne 4, entier entre 50 et 100 attendu.
    (...)
    fichier50.xml conforme au schéma XML associé (schema.xsd).

    Comment vous faites vous ?

    Mais comme l'a dit Swoög, peut-être ai-je mal utilisé les scripts proposés ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par Swoög
    Es-tu totalement sûr que tu utilises le script correctement et que tu ne valides pas le XSD au lieu du XML ?
    J'ai fait plein de tests et j'ai lu de la doc sur le MSXML, et le script fait bien cela, mais pas le contraire comme souhaité. Donc on en revient à mon dernier message sous ce topic

    Sinon le code de ckeromen peut être raccourci :

    (code VBS)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Dim WshShell
    Set WshShell = CreateObject ("WScript.Shell")
     
    Dim xmlDoc
    set xmlDoc = CreateObject ("msxml2.DOMDocument.4.0")
    xmlDoc.async = false
    xmlDoc.validateOnParse = true
     
    Dim xsdCache
    set xsdCache = CreateObject ("Msxml2.XMLSchemaCache.4.0")
    xsdCache.add {namespace}, {schéma XML .xsd}
    Set xmlDoc.schemas = xsdCache
     
    xmlDoc.load {fichier XML .xml}
     
    Set myErr = xmlDoc.parseError
    If (myErr.errorCode <> 0) Then
      WScript.Echo ("errorReason=" + myErr.reason)
    else
      WScript.Echo("Ok")
    End If

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/06/2012, 17h55
  2. [XSD] Validation de fichiers XML en utilisant un schéma XSD
    Par x-timas dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 24/03/2010, 14h54
  3. [2.0] Valider un fichier xml/xsd
    Par lenoil dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/02/2007, 11h15
  4. [XML][XSD] Lier un fichier XML à un schéma
    Par fisico dans le forum Valider
    Réponses: 1
    Dernier message: 01/09/2006, 11h25
  5. [Xml/Xsd]valider son fichier Xml avec un schéma xsd
    Par ePoX dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/02/2006, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo