Ant의 XMLValidate 작업을 사용하여 DTD에 대한 XML 문서의 유효성을 검사하려고합니다. 문제는 그것이 작동하지 않는다는 것이 아니라 너무 잘 작동한다는 것입니다. 내 DTD에 IDREF 유형의 "@linkend"속성이있는 외부 참조 요소가 있습니다. 대부분의 참조 ID는 현재 문서 외부에 있습니다. 때문에 IDREF가 참조하는 ID가 존재하지 않는다는 파서가 불평하므로 빌드가 실패합니다. 그렇다면 DTD에 대해 XML 문서의 유효성을 검사 할 수 있지만이 유형의 오류는 무시할 수있는 방법이 있습니까?Ant의 XMLValidate 작업에서 제공하는 유효성 검사의 "수준"을 어떻게 변경합니까?
내가 시도한 몇 가지 사항 : XMLValidate에 "lenient"옵션을 설정하면 DTD에 대한 유효성이 아니라 문서의 올바른 형식 만 검사합니다. The XMLValidate task in the Ant manual에는 설정할 수있는 일부 JAXP 및 SAX 옵션이 나열되어 있지만 적용 할 수있는 옵션은 없습니다. 당신이 볼 수 있듯이
<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>
, 나는 공공 식별자의 카탈로그에 DTD를 해결하기 위해 ResolvingXMLReader 사용하고 있습니다 :
여기 내 코드입니다. 그러나 중첩 된 xmlcatalog 요소를 사용하여 DTD를 직접 지정하면 동일한 동작이 발생합니다.
좋은 지적. 이것은 실제로 내가 끝내었던 것이다. –