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:
xmllint --relaxng schema.rng fichier.xml
sous Perl avec XML::LibXML:
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
Partager