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 :

[Contributions] Comment valider un XML avec un XSD ? [Sources]


Sujet :

Valider XML

  1. #1
    Community Manager

    Profil pro
    Inscrit en
    Avril 2014
    Messages
    4 207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2014
    Messages : 4 207
    Points : 13 061
    Points
    13 061
    Par défaut [Contributions] Comment valider un XML avec un XSD ?
    Bonjour à tous !

    Dans le cadre des sources XML, nous souhaitons rassembler toutes les ressources permettant de valider un Document XML avec un XSD (XML Schema). Quelque soit la librairie, le programme ou le langage utilisé, si vous connaissez un moyen de le faire, pourriez-vous l'indiquer (de manière complète et minimale) afin que ce soit intégré aux sources XML ?

    Merci d'avance,
    Swoög

    Topic à retenir : http://www.developpez.net/forums/sho...d.php?t=278956
    Pour contacter les différents services du club (publications, partenariats, publicité, ...) : Contacts

  2. #2
    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 XML Validator
    Pas sûr que ça réponde à la question, mais sait-on jamais ?

    - XML Validator
    Ensuite, tapez sur le "dossier" XML (menu de gauche), puis sur "XML Validator".

    - Démo

    Je l'ai essayé. Je ne suis pas complètement convaincu.

  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
    XML Notepad 2007

    Ce n'est pas un script, mais il valide à la fois le fichier XML et le fichier XSD, donc regarde si les données du fichier XML sont conformes au schéma défini dans le XSD.

    La preuve : ICI (message que j'ai posté il y a 3 jours)

  4. #4
    Membre actif
    Avatar de bobuse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 232
    Points : 278
    Points
    278
    Par défaut
    sur environnement GNU-Linux, il y a bien sûr xmllint

    EDIT : ha ba non en fait ça ne semble pas si simple

  5. #5
    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
    Citation Envoyé par bobuse
    sur environnement GNU-Linux, il y a bien sûr xmllint

    EDIT : ha ba non en fait ça ne semble pas si simple
    en fait, si, il suffit de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmllint --noout "${XML}" --schema "${XSD}"


    c'est avec libxml pour ceux qui se demande ^^
    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)

  6. #6
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Essayez Liquid XML Studio, un truc gratuit et vraiment pas trop mal.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    C'est aussi possible sous eclipse en déclarant un namespace ou en utilisant un catalogue

  8. #8
    Membre averti
    Homme Profil pro
    Game Graphics Programmer
    Inscrit en
    Août 2006
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Game Graphics Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 408
    Points : 392
    Points
    392
    Par défaut
    J'avais posté, il y a un certain temps (grosso modo, 2 ans) un petit extrait de code C++ avec un validateur RelaxNG. J'aimerais bien retrouver le post...

    Vu qu'il n'y a pas que XML Schema pour valider, mais aussi RelaxNG (qui IMHO est bien plus facile à écrire à la main que XML Schema), voici quelques exemples de validations RNG:

    avec xmllint:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmllint --relaxng schema.rng fichier.xml
    sous Perl avec XML::LibXML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    my $rngFile		= 'schema.rng';
    my $rngSchema	= XML::LibXML::RelaxNG->new(location => $rngFile);
     
    my $xmlFile		= 'fichier.xml';
    my $xmlParser	= XML::LibXML->new() or die "new parser failed";
    my $xmlDoc		= $xmlParser->parse_file($xmlFile) or die "parse failed";
     
    #la ligne importante:
    eval($rngSchema->validate( $xmlDoc ) );
    (pour XML Schema, ce sera pareil, mais avec XML::LibXML::Schema à la place de XML::LibXML::RelaxNG).

    Sinon, il y mon projet IValidator, trouvable sur le SVN donné ci-dessous, qui encapsule les appels à libxml2 dans 2 classes très simples permettant de facilement valider un fichier XML avec un XML Schema ou un schema RelaxNG.
    https://kagefx.svn.sourceforge.net/s...alidator/trunk

  9. #9
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    A noter éventuellement : l'existence d'un outil de validation XSD en ligne (@W3C). Je ne l'ai pas essayé car mes documents ne sont pas en ligne, mais le lien me semble avoir sa place ici... ^^

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  10. #10
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Perso quand je n'ai rien sous la main, j'utilise Internet Explorer...


    ERE
    Quand une tête pense seule, elle devient folle.

  11. #11
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    J'utilise XML Spear ( http://www.donkeydevelopment.com ).

    C'est un outil gratuit qui fait (entre autres) de la validation par XSD ou DTD.

    Il permet aussi de générer un XML à partir d'un XSD en paramétrant la profondeur et le nombre d'itérations, ce qui peut être utile sur les gros fichiers.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Points : 93
    Points
    93
    Par défaut
    ce logiciel , est qu'il permet aussi de parser en xml ?

  13. #13
    Membre du Club Avatar de xanav
    Inscrit en
    Mars 2010
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 55
    Points : 53
    Points
    53
    Par défaut Validation sous visual studio 2008
    Bonjour,

    Je débute avec les XSD et j'ai un petit problème pour valider mon document. J'ai cru comprendre que Visual Studio permet de valider un Xml au travers de son schéma simplement en faisant XML > Valider les données XML.
    Mon problème .... je n'ai aucun bouton "Valider les données XML" dans mon menu "XML" ....

    J'utilise VS 2008 et je n'ai que 5 options dans le menu XML :
    - Créer un schéma
    - Afficher la sortie XSLT
    - Débogage XSLT
    - Annuler la sortie XSLT
    ------------------------
    - Schémas...

    Merci de votre aide
    Notre connaissance est finie, notre ignorance est infinie.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Points : 22
    Points
    22
    Par défaut Eclipse
    Bonjour, voici quelques suggestions:

    - eclipse fournit des outils XML sympa (coloration syntaxique, souligner les erreurs, validation, édition WYSIWYG, etc. ).
    - plugin firefox: XML Developper très sympa !

  15. #15
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par fjalt Voir le message
    Bonjour, voici quelques suggestions
    ...
    Heu... *hum hum*

    question : 28/03/2011, 11h54
    réponse : 30/12/2011, 10h05
    (pire : date initiale du thread : 26/06/2006, 18h11 )

    Et sinon, la nécromancie, tu as commencé jeune ?

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  16. #16
    Membre à l'essai
    Femme Profil pro
    Consultant E-Business
    Inscrit en
    Avril 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2014
    Messages : 16
    Points : 19
    Points
    19
    Par défaut Juste merci pour la commande xmllint de libxml
    Citation Envoyé par RomainVALERI Voir le message
    Heu... *hum hum*

    question : 28/03/2011, 11h54
    réponse : 30/12/2011, 10h05
    (pire : date initiale du thread : 26/06/2006, 18h11 )

    Et sinon, la nécromancie, tu as commencé jeune ?
    N'empêche, on est bien content de trouver des réponses à nos questions sans avoir à les reposer et les forums sont faits pour ça non ?

    OK, je sors désolée de déterrer un vieux thread...

    Merci quand même pour la réponse de Swoög car c'est ce que je cherchais

    xmllint --noout "${XML}" --schema "${XSD}"


    c'est avec libxml pour ceux qui se demande ^^

  17. #17
    Membre actif
    Inscrit en
    Août 2005
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 96
    Points : 205
    Points
    205
    Par défaut Valider un fichier XML avec un fichier XSD en ligne de commande sous Windows
    Voici comment valider simplement un fichier XML avec un fichier XSD en ligne de commande, avec l'outil xmllint :

    Tout d'abord, comme expliqué ici, http://flowingmotion.jojordan.org/20...nload-xmllint/
    il faut télécharger les sources à cette adresse : ftp://ftp.zlatkovic.com/libxml/.

    Les fichiers suivants sont nécessaires :

    - libxml2, le parseur et processeur XML.
    - libxslt, le processeur de transformation XSL and EXSL.
    - xmlsec, le processeur XMLSec et XMLDSig.
    - xsldbg, le débogueur XSL Transformations.
    - openssl, l'utilitaire de cryptage.
    - iconv, l'utilitaire d'encodage de caractères.
    - zlib, l'utilitaire de compression.

    Une fois les archives zip téléchargées, décompressez les dans un répertoire au choix (C:\xmllint par exemple).

    Dans chaque répertoire obtenu, recherchez le sous répertoire bin, et copiez l'intégralité de son contenu dans C:\xmllint.

    xmllint est installé !

    Pour effectuer la validation d'un fichier "monFichier.xml" situé à la racine de c: avec un fichier "monFichier.xsd" situé a la racine de d:, vous pouvez simplement créer un fichier "test.bat" dans C:\xmllint contenant le texte suivant :

    xmllint --schema d:\monFichier.xsd c:\monFichier.xml > d:\output.txt 2> d:\err.txt
    pause

    Double-cliquez sur ce fichier pour lancer l'opération.
    Le résultat de la validation se trouvera dans le fichier d:\output.txt.
    La liste des erreurs éventuelles se trouvera dans le fichier d:\err.txt.

    Plus d'infos sur les options de ligne de commande de xmllint ici : http://xmlsoft.org/xmllint.html

    Petit exemple vite fait en Windev :

    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
    22
    23
    24
    25
    26
    27
     
    LOCAL
    	sRepExe est une chaîne
    	sXmllint est une chaîne
    	sFiXsd est une chaîne
    	sFiXml est une chaîne
    	sFiErr est une chaîne
    	sCmd est une chaîne
    	sMessErreur est une chaîne
     
    sRepExe		= ComplèteRep(fRepExe())
    sXmllint 	= sRepExe+"xmllint\xmllint.exe"
    sFiXsd 		= sRepExe+"monFichier.xsd"
    sFiXml 		= sRepExe+"monFichier.xml"
    sFiErr 		= sRepExe+"Err.txt"
     
    sCmd = sXmllint+" --schema "+sFiXsd+" "+sFiXml+" 2> "+sFiErr
    fSauveTexte("xmllint.bat",sCmd)
    SI PAS LanceAppli("xmllint.bat",exeIconise+exeInactif,exeBloquant) ALORS
    	Erreur(ErreurInfo(errComplet))
    FIN
    fSupprime("xmllint.bat")
    SI fFichierExiste(sFiErr) ALORS
    	sMessErreur = fChargeTexte(sFiErr)
    	fSupprime(sFiErr)
    	Info(sMessErreur)
    FIN
    Bonne prog

Discussions similaires

  1. Comment valider un XML via un XSD en PHP avec DOM ?
    Par t-die dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h32
  2. Réponses: 0
    Dernier message: 10/01/2012, 16h31
  3. Comment valider un XML via un XSD avec xmllint sous OS/X ?
    Par ckeromen dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h30
  4. Comment valider un XML via un XSD en C++/COM (avec MSXML6) ?
    Par caradhras dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h25
  5. Comment valider un XML via un XSD en C++ (avec libXML2) ?
    Par blastobi dans le forum Télécharger
    Réponses: 0
    Dernier message: 10/01/2012, 16h22

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