如何使用Saxon java库命令行工具执行schematron验证?

时间:2012-03-31 11:42:50

标签: java xml xsd saxon schematron

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

根据commandline引用,我没有看到任何指定schematron文件的选项。

2 个答案:

答案 0 :(得分:6)

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

基于this website,可以通过一系列XSL转换对schematron验证XML文件。因为我还需要有关如何与撒克逊人结合的信息 - 这里是对撒克逊人的修改,在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,我只是将其关闭并从那里收集结果。

很抱歉进入更多细节而不是可能需要,但我希望我能够开始这一切。

答案 1 :(得分:2)

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