命令行验证器支持使用嵌入式iso Schematron放松模式

时间:2014-05-28 08:45:54

标签: validation relaxng schematron

是否有任何命令行验证器可以处理带有嵌入式iso schematron的放宽模式?

我有几个带有嵌入式iso-schematron规则的放松模式,我必须能够在命令行上验证。看起来,jing,我们通常的验证器,只适用于schematron 1.5。在网上冲浪,我还没有找到任何支持嵌入式iso schematron的验证器,但我使用oXygen作为xml编辑器,我可以从那里验证。

1 个答案:

答案 0 :(得分:2)

只要您首先提取Schematron规则,就可以使用Jing,然后针对提取的Schematron架构运行单独的验证。使用RNG2Schtrn.xsl XSLT样式表可以进行Schematron提取(在线查找有点难,但我们在https://github.com/citation-style-language/utilities/blob/master/RNG2Schtrn.xsl处有一个副本)和Saxon(与Jing捆绑在一起)。如果您的模式使用紧凑的.rnc语法,则首先必须将其转换为XML .rng语法,您可以使用Trang。

摘自https://github.com/citation-style-language/utilities/blob/master/style-qc.sh

# Jing currently ignores embedded Schematron rules.
# For this reason, the schema is first converted to
# RELAX NG XML, after which the Schematron code is
# extracted and tested separately.
java -jar ${pathTrang} ${pathCSLSchema} ${TMP_DIR}/csl.rng
java -jar ${pathSaxon} -o ${TMP_DIR}/csl.sch ${TMP_DIR}/csl.rng RNG2Schtrn.xsl
java -jar ${pathJing} ${TMP_DIR}/csl.sch ${pathCSLStyles}/*.csl || true

# RELAX NG Compact validation
java -jar ${pathJing} -c ${pathCSLSchema} ${pathCSLStyles}/*.csl || true

另见https://stackoverflow.com/a/18616036/1712389