J'essaie d'utiliser la tâche XMLValidate de Ant pour valider un document XML par rapport à une DTD. Le problème n'est pas que ça ne marche pas, mais que ça marche trop bien. Ma DTD contient un élément xref avec un attribut "@linkend" de type IDREF. La plupart de ces ID de référence se trouvent en dehors du document en cours. Pour cette raison, ma génération échoue, car l'analyseur se plaint que l'ID référencé par l'IDREF n'existe pas. Donc, y a-t-il un moyen de valider mon document XML par rapport à la DTD, mais d'ignorer les erreurs de ce type? Quelques choses que j'ai essayées: La définition de l'option "lenient" sur XMLValidate fait que la tâche vérifie seulement la bonne forme du document, pas sa validité par rapport à une DTD. The XMLValidate task in the Ant manual répertorie certaines options JAXP et SAX que vous pouvez définir, mais aucune ne semble applicable.Comment modifier le "niveau" de validation que fournit la tâche XMLValidate de Ant?
Voici mon code:
<target name="validate">
<echo message="Validating ${input}"/>
<xmlvalidate file="${input}" failonerror="yes"
classname="org.apache.xml.resolver.tools.ResolvingXMLReader">
<classpath refid="xslt.processor.classpath"/>
</xmlvalidate>
</target>
Comme vous pouvez le voir, j'utilise ResolvingXMLReader pour résoudre la DTD contre un catalogue d'identificateurs publics. Cependant, j'ai le même comportement si je spécifie la DTD directement en utilisant un élément xmlcatalog imbriqué.
Bon point. C'est en fait ce que j'ai fini par faire. –