在Schematron验证(.sch)中包含模式验证(.xsd)[不是相反]

时间:2017-06-02 15:00:04

标签: xml xsd schematron oxygenxml

由于在XSD文件中强制执行数据结构比在Schematron中更容易且更简洁,并且因为我们已经有工作XSD文件来验证单个实体,所以我想将这些作为我的第一个验证阶段包含在内。 Schematron的。

我发现教程描述了相反的方式(在XSD中嵌入了Schematron规则)。

我找到了元素<sch:include href="my.xsd">但是当我验证(使用oXygen)时,它似乎没有什么区别。

似乎我遗漏了一些非常明显的东西,因为这应该得到支持而没有问题或不应该?

1 个答案:

答案 0 :(得分:2)

嗯,据我所知,没有概念在Schematron中包含XSD。但是,由于您可以在Schematron中嵌入XSLT并且XSLT架构感知能够验证您的输入数据,您可以使用xsl:import-schema:

<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt2" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:sqf="http://www.schematron-quickfix.com/validator/process">

    <xsl:import-schema schema-location="path/to/my.xsd"/>

    <!-- [your schematron rules] -->
</sch:schema>

在oXygen中,您需要为Schematron验证激活模式识别:

偏好设置 - &gt; XML - &gt; XML-Parser - &gt; Schematron - &gt;使用Saxon EE(模式感知)进行xslt2 / xslt3查询语言绑定。