gpt4 book ai didi

ant 中的 XML 验证失败,错误与正在验证的文件不匹配

转载 作者:数据小太阳 更新时间:2023-10-29 01:58:31 25 4
gpt4 key购买 nike

在此先感谢您的帮助...

我遇到了 XML 文件的问题,这些文件未通过 DTD 验证(通过 ant xmlvalidate 任务),但 XML 文档中报告的错误与正在验证的文档的内容不匹配。此外,在 Oxygen 中打开的相同文件也没有问题。

报告错误的 ant 输出示例如下:

[xmlvalidate] /Path/to/file.xml:240:91: Attribute "match_style" with value "ble" must have a value from the list "any all none ".

在目视检查相关文件时, match_style 的值第 240 行的属性是 all .对该文件的搜索显示字符串 ble ,虽然它确实在文档中出现了几次(作为标签中 table 的子字符串,以及作为属性名称的 enable),但根本没有出现在第 145 行和第 328 行之间。

我曾尝试手动编辑 XML 文件并重新验证。如果我从文件中比报告的错误(不进行其他更改)更早的地方删除换行符或其他空格(有时如果我添加换行符),它偶尔会完全修复问题,然后文件将验证。在其他情况下,它仍然会失败,但错误会在文件的更下方,对接近新错误的空白进行额外编辑将修复问题或将“错误”进一步向下移动。我一直无法辨别出这种编辑会解决哪些问题,哪些不会。

只是重复一下重点:有时会更改空格 并且不做其他更改 导致文件验证。

我已经在 XML 文件中搜索了可能正在做奇怪事情的不可见字符和控制字符,但除了花园品种的空白之外没有找到任何东西,所有的地方都应该在那里。

这些文件是通过 XSLT 2.0 转换从各种其他形式的 XML 源文件生成的。转换是通过 Java 完成的在 ant 构建中使用 Saxon 的任务。 (我无法让 XSLT 任务或 Saxon 任务按需要工作,因为我的 XSL 在某些情况下从单个源文件生成多个结果文档,除了第一个结果文档外,其他所有文档似乎总是这些任务被省略。)这是任务:
<java classname="net.sf.saxon.Transform" fork="true"
output="${dest.dir}/build"
resultproperty="transform_result"
failonerror="true">
<arg line="-o ${dest.dir}/ ${source.dir}/xml_sources ${source.dir}/xsl/transform.xsl"/>
</java>

我还搜索了 XSL 和源 XML 文件中的异常字符,并在 XSL 中使用字符映射并在结果文档中缩进以确保异常空白字符没有任何奇怪的事情发生。没有发现任何奇怪的东西,字符映射或缩进更改的唯一区别本质上与手动编辑空格相同 - “错误”有时会四处移动,但仍然会发生。

我尝试使用不同版本的 Saxon 和不同版本的 Ant,没有不同的结果。问题开始了一段时间(不完全确定何时),但过去一切都过去了,所以我尝试使用旧版本的 XSL 和源,但没有找到旧版本的东西t 显示问题(尽管由于从 CVS 切换到 SVN,并且 CVS 不再存在,我可能根本无法回溯到足够远的地方,因为一些最旧的修订版现在丢失了)。

文件必须验证的 DTD 不是我的 - 我无法更改它或切换到模式。

我通常在 Mac 上工作(目前运行 10.7.5),但问题也发生在 Linux 上(不确定是什么版本)。我还没有真正能够使用的一个变量是 Java。上次运行正常时,我可能一直在运行 Java 1.5 - 我现在使用的是 1.7,而且在我运行 1.6 时肯定会发生这种情况。在我可用的机器上,我无法回到 1.5。

这就是我能想到的所有可能相关的信息。

我对这个问题无能为力。在我所有的研究中,我从来没有听说过其他人报告了同样的问题,更不用说解决它了。任何关于可能出错的想法将不胜感激,不胜感激。

谢谢!

最佳答案

我怀疑 JDK 附带的 Xerces 解析器有问题。尝试使用 Apache 的 Xerces 版本,这要好得多。

(我这样说是因为我以前看到过 Xerces 的 JDK 版本错误报告了包含存在于文档中的字符串的属性值,但不是作为属性值。)

关于ant 中的 XML 验证失败,错误与正在验证的文件不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19987212/

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