首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改Ant的XMLValidate任务提供的验证“级别”?

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

Stack Overflow用户
提问于 2008-10-04 22:11:35
回答 2查看 822关注 0票数 0

我正在尝试使用Ant任务来验证XMLValidate文档。问题不是它不工作,而是它工作得太好了。我的DTD包含一个xref元素,该元素具有IDREF类型的"@linkend“属性。这些引用ID中的大多数都在当前文档之外。正因为如此,我的构建失败了,因为解析器报告IDREF引用的ID不存在。那么,有没有办法根据DTD验证我的XML文档,而忽略这种类型的错误呢?

我尝试了一些方法:在XMLValidate上设置"lenient“选项使任务只检查文档的格式良好性,而不检查它对DTD的有效性。The XMLValidate task in the Ant manual列出了一些可以设置的JAXP和SAX选项,但似乎没有一个是适用的。

下面是我的代码:

代码语言:javascript
复制
 <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,则会得到相同的行为。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-10-22 01:18:53

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

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

票数 2
EN

Stack Overflow用户

发布于 2008-10-06 12:11:26

不确定这是否有帮助,但您可以尝试此解决方法吗?创建一个临时文件,合并所有的XML,然后执行验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/171097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档