在 Schematron 验证 (.sch) 中包含 Schema 验证 (.xsd) [而不是相反]
Include Schema validation (.xsd) in Schematron validation (.sch) [not the other way around]
因为在 XSD 文件中实施数据结构比在 Schematron 中更容易和更简洁,而且我们已经有工作的 XSD 文件来验证单个实体,我想将这些作为第一个验证阶段包含在我的 Schematron 中。
我找到了描述其他方式的教程(XSD 中的嵌入式 Schematron 规则)。
我找到了元素 <sch:include href="my.xsd">
但是当我验证(使用 oXygen)时它似乎没有什么不同。
似乎我遗漏了一些非常明显的东西,因为这应该毫无问题地得到支持,或者不应该得到支持?
嗯,据我所知,Schematron 中没有包含 XSD 的概念。但是由于您可以将 XSLT 嵌入到 Schematron 中并且 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 验证激活模式感知:
首选项 -> XML -> XML-解析器 -> Schematron -> 使用 Saxon EE(架构感知)进行 xslt2/xslt3 查询语言绑定。
因为在 XSD 文件中实施数据结构比在 Schematron 中更容易和更简洁,而且我们已经有工作的 XSD 文件来验证单个实体,我想将这些作为第一个验证阶段包含在我的 Schematron 中。
我找到了描述其他方式的教程(XSD 中的嵌入式 Schematron 规则)。
我找到了元素 <sch:include href="my.xsd">
但是当我验证(使用 oXygen)时它似乎没有什么不同。
似乎我遗漏了一些非常明显的东西,因为这应该毫无问题地得到支持,或者不应该得到支持?
嗯,据我所知,Schematron 中没有包含 XSD 的概念。但是由于您可以将 XSLT 嵌入到 Schematron 中并且 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 验证激活模式感知:
首选项 -> XML -> XML-解析器 -> Schematron -> 使用 Saxon EE(架构感知)进行 xslt2/xslt3 查询语言绑定。