代码之家  ›  专栏  ›  技术社区  ›  James Sulak

如何更改Ant的XMLValidate任务提供的验证“级别”?

  •  0
  • James Sulak  · 技术社区  · 18 年前

    我试过几件事:在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>
    

    如您所见,我使用ResolvingXMLReader根据公共标识符目录解析DTD。但是,如果直接使用嵌套的xmlcatalog元素指定DTD,则会得到相同的行为。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Warren Blanchet    17 年前

    您的问题源于DTD的两种解释之间的差异:您的和 spec's :-). IDREF必须引用同一文档中的ID,而您的ID则引用跨文档的元素。

    我的建议是创建您自己的DTD版本,为该属性指定NMTOKEN而不是IDREF,并使用它执行验证。这将确保内容是有效的xml id值。

        2
  •  0
  •   mindas    18 年前

    创建一个临时文件,合并所有XML,并进行验证。