1

我猜我的问题可能源于与 UTF8 相关的 Windows 文件问题。但话又说回来,代码是基于 Java 的,所以问题可能是任何问题。

我运行了 MSV 和 JING 验证器,两者都给出了与下面相同的结果。但是同一个文件在它的内部验证器上确实验证得很好。我错过了什么?请注意,它在第一个字符上失败,因此解析器不太可能是问题所在。尝试在管理员模式下运行它以消除任何可能的权限问题。结果相同。

C:\docbook\src>java -jar c:\msv\msv.jar c:\docbook\rnc\docbook.rnc dgsample.xml
-debug
start parsing a grammar.
Content is not allowed in prolog.
  1:1@file:///c:/docbook/rnc/docbook.rnc
Exception in thread "main" java.lang.NullPointerException
        at com.sun.msv.driver.textui.Driver.run(Driver.java:221)
        at com.sun.msv.driver.textui.Driver.main(Driver.java:68)
4

1 回答 1

1

你的问题不是窗户(嗯,不是这个特殊的问题)

您正在尝试使用紧凑格式的 RelaxNG 模式进行验证。oXygen 可以很好地处理这个问题,因为它在内部使用了 Jing。据我所知,MSV 无法将紧凑格式处理为格式。如果您需要在命令行使用 MSV 执行此操作,则使用 oXygen 中内置的 Trang 转换器(工具菜单,版本 12.2 中的生成/转换模式)将您的模式转换为 XML 格式。

假设您使用的是普通的 DocBook 版本,那么无论如何您也应该拥有 docbook.rng 的副本,这样您就可以这样做(我不知道您显然将 jing.jar 存储在哪里):

C:\docbook\src>java -jar jing.jar c:\docbook\rnc\docbook.rng dgsample.xml

或者

C:\docbook\src>java -jar c:\msv\msv.jar c:\docbook\rnc\docbook.rng dgsample.xml

另一方面,您可以使用 Jing 来执行此操作,但您需要告诉它该文件是紧凑格式:

C:\docbook\src>java -jar jing.jar -c c:\docbook\rnc\docbook.rnc dgsample.xml

希望有帮助

于 2011-07-19T09:30:25.167 回答