Wie ändere ich das „Niveau“ der Validierung, die Ant XMLVALIDATE Aufgabe bietet?

StackOverflow https://stackoverflow.com/questions/171097

  •  05-07-2019
  •  | 
  •  

Frage

Ich versuche, Ant XMLVALIDATE Aufgabe zu verwenden, um ein XML-Dokument gegen eine DTD zu validieren. Das Problem ist nicht, dass es nicht funktioniert, sondern dass es auch gut funktioniert. Meine DTD enthält ein xref Element mit einem „@linkend“ Attribut vom Typ IDREF. Die meisten dieser Referenz-IDs außerhalb des aktuellen Dokuments. Aus diesem Grund, meine Build fehlschlägt, da der Parser beschwert sich, dass die ID, die IDREF verweist nicht existiert. So ist es eine Möglichkeit, dass ich meine XML-Dokument gegen die DTD validieren, aber Fehler dieser Art ignorieren?

Ein paar Dinge, die ich versucht habe: die „nachsichtig“ Option auf XMLVALIDATE Einstellung machen nur die Aufgabe, die Wohlgeformtheits- des Dokuments überprüfen, nicht, dass es Gültigkeit gegen eine DTD. Die XMLVALIDATE Aufgabe in der Ant Handbuch einige JAXP und SAX-Optionen aufgeführt, die Sie festlegen können , aber keiner scheint anwendbar.

Hier ist mein 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>

Wie Sie sehen können, ich ResolvingXMLReader bin mit der DTD gegen einen Katalog der öffentlichen Kennungen zu lösen. Allerdings habe ich das gleiche Verhalten, wenn ich die DTD direkt unter Verwendung eines verschachtelten xmlcatalog Element angeben.

War es hilfreich?

Lösung

Ihr Problem ergibt sich aus der Differenz zwischen zwei Interpretationen der DTD: Ihre und die :-) die spec. IDREFs muss sich in demselben Dokument zu ids beziehen, während Ihr auf Elemente über Dokumente beziehen.

ist mein Vorschlag, Ihre eigene Version der DTD zu erstellen, die NMTOKEN statt IDREF für dieses Attribut gibt an, und verwenden Sie es Ihre Validierung durchgeführt werden. Dadurch wird sichergestellt, dass der Inhalt gültige XML-ID-Werte werden.

Andere Tipps

Nicht sicher, ob das hilft, aber könnten Sie diese Abhilfe versuchen? Erstellen Sie eine temporäre Datei, verschmelzen alle Ihre XMLs, und führen Sie die Validierung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top