C'est l'outil de base écrit par D. Veillard. Il fait partie de la suite d'outils XML écrits pour linux et particulièrement Gnome.
Une petite documentation des options est donnée par simple appel de xmllint.
$>xmllint incorrect.xml incorrect.xml:2:
parser error : Opening and ending tag mismatch: a line 1 and b
</b>
$>xmllint correct.xml
<?xml version="1.0"?>
<a nom="ifiif"><b_w>
<a>coucou</a>eddd </b_w>
</a>Remarquez que xmllint peut transformer légèrement le document. Ici, l'instruction de traitement
<?xml version="1.0"?>
a été ajoutée.
L'option --debug affiche des informations plus complètes. Par contre, l'option --noout permet de ne pas afficher le document analysé.
Avec une DTD SYSTEM la validation s'obtient de la façon suivante.
$> xmllint -valid doc.xml
Certaines options permettent d'améliorer la sortie :
--noblank : Enlève tout séparateur dans la sortie
--format : reformate la sortie en un beau code xml
--encode : modifie l'encodage de la sortie et ajoute les bonnes instructions de traitement...
Ce sont les associations entre les noms logiques (comme des URNs) et les URI qui permettent de retrouver des entités externes. Par exemple c'est le cas pour les DTD publiques comme DocBook, TEI, XHTML, HTML, etc...
Pour des raisons d'efficacité, les catalogues permettent de gérer un système de cache évitant d'avoir constamment à aller chercher des ressources sur le net.
Il existe des catalogues pour SGML et XML tous deux gérés par libxml. Dans un processus de recherche d'entités, libxml consulte /etc/xml/catalog. Ce qui lui permet d'obtenir des ressources localement ou l'adresse des ressources externes.
Un premier exemple simple est le cas où la définition de type de document n'est pas donnée dans le document.
$>xmllint --format --dtdvalid doc.dtd validsansdoc.xmlUn deuxième cas est l'utilisation de DTD sur le net.
$>xmllint --format \
--dtdvalid http://www.grappa.univ-lille3.fr/~tommasi/doc.dtd \
validsansdoc.xml