【问题标题】:Include Schema validation (.xsd) in Schematron validation (.sch) [not the other way around]在 Schematron 验证 (.sch) 中包含模式验证 (.xsd) [不是相反]
【发布时间】:2017-06-02 15:00:03
【问题描述】:

由于在 XSD 文件中实施数据结构比在 Schematron 中更容易且不那么冗长,而且由于我们已经有工作 XSD 文件来验证单个实体,因此我想将这些作为第一个验证阶段包含在我的Schematron。

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

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

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

【问题讨论】:

    标签: xml xsd schematron oxygenxml


    【解决方案1】:

    嗯,据我所知,没有将 XSD 包含在 Schematron 中的概念。但是由于您可以在 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 验证激活模式感知:

    首选项 -> XML -> XML-Parser -> Schematron -> 使用 Saxon EE (schema-aware) 进行 xslt2/xslt3 查询语言绑定。

    【讨论】:

    • 谢谢,唯一应该提到的是这是一项高级功能,只有 Saxonica 库的许可 EE 版本提供。 oXygen 可以做到(因为它是付费产品),但 XMLbuddyValidator 不能,因为它使用的是 saxon 库的 HE 版本。
    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 2010-11-26
    相关资源
    最近更新 更多