3

非常基本的问题 - 我有一个 xml 文件,我想根据 schematron 文件对其进行验证。如何使用 Saxon 命令行进行操作?

根据命令行参考,我没有看到任何指定 schematron 文件的选项。

4

2 回答 2

6

扩展上一个答案,因为我需要这样做并且它没有提供足够的信息(而且由于我的脚本已经在进行十几个 XSL 转换 - 还有四个?)

基于这个网站,可以通过一系列 XSL 转换针对 schematron 验证 XML 文件。由于我还需要有关如何与 saxon 结合的信息 - 这是对 saxon 的修改,在 windows 框中,带有目录文件。

以下是我通过计算机上的 saxon 命令行运行 XSLT 的方法(其中 FilePath 取决于系统):

java -cp "C:\FilePath\saxon9ee.jar;C:\FilePath\resolver.jar";. net.sf.saxon.Transform -s:inputFile.xml  -o:outputFile.xml  -xsl:C:\FilePath\transform.xsl -catalog:"C:\FilePath\catalog.xml" 

这里要指出的重要一点是,当您在 Saxon 中使用目录文件时,您必须将其指向 resolver.jar 文件。

所以随着

XSLT = java -cp "C:\FilePath\saxon9ee.jar;C:\FilePath\resolver.jar";. net.sf.saxon.Transform -catalog:"C:\FilePath\catalog.xml"

然后来自网站的信息是有意义的(在 oXygen 中找到了必要的 xsl 文件):

 XSLT -input=xxx.sch  -output=xxx1.sch  -stylesheet=iso_dsdl_include.xsl
 XSLT -input=xxx1.sch  -output=xxx2.sch  -stylesheet=iso_abstract_expand.xsl
 XSLT -input=xxx2.sch  -output=xxx.xsl  -stylesheet=iso_svrl.xsl
 XSLT -input=document.xml  -output=xxx-document.svrl  -stylesheet=xxx.xsl

您正在获取 schematron 文件,通过三个转换运行它以得到一个 xsl 文件,然后您在原始 xml 文档上运行该文件。这实际上使得编写脚本相对容易。

最后一个命令从未真正为我填充过输出文件。由于它在没有人的情况下运行良好并将消息转储到 STOUT,我只是将其关闭并从那里收集结果。

很抱歉,我可能没有必要提供更多的细节,但我希望我能从这一切开始。

于 2014-05-05T21:52:10.957 回答
2

经过大量研究,似乎这并不可能。我们必须首先生成 xsl 文档,然后使用它来执行验证。

于 2012-03-31T13:39:49.637 回答