gpt4 book ai didi

java - 如何更改 Ant 的 XMLValidate 任务提供的验证 "level"?

转载 作者:行者123 更新时间:2023-12-02 08:38:49 24 4
gpt4 key购买 nike

我正在尝试使用 Ant 的 XMLValidate 任务根据 DTD 验证 XML 文档。问题不是它不起作用,而是它太好用了。我的 DTD 包含一个外部参照元素,该元素具有 IDREF 类型的“@linkend”属性。大多数引用 ID 都位于当前文档之外。因此,我的构建失败,因为解析器提示 IDREF 引用的 ID 不存在。那么,有没有什么方法可以根据 DTD 验证我的 XML 文档,同时忽略此类错误?

我尝试过的一些事情:在 XMLValidate 上设置“宽松”选项使任务仅检查文档的格式良好性,而不是检查 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 根据公共(public)标识符目录解析 DTD。但是,如果我直接使用嵌套的 xmlcatalog 元素指定 DTD,我会得到相同的行为。

最佳答案

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

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

关于java - 如何更改 Ant 的 XMLValidate 任务提供的验证 "level"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/171097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com