MarkLogic 使用什么引擎根据 XML 模式版本 1.1 验证 XML 文档?
What engine does MarkLogic use to validate XML documents against an XML Schema version 1.1?
我被要求研究在 MarkLogic 环境中使用 1.1 版 XML 模式将 Schematron 断言折叠到 XML 模式中。
XSD 1.1 没有指定的一件事是自定义错误消息的使用,因为它们在 Schematron 文件中。
我发现 Saxonica 和 Xerces 都有解决该问题的扩展。
以下是 Saxonica 处理问题的方式:
<xs:element name="date">
<xs:simpleType>
<xs:restriction base="xs:date" xmlns:saxon="http://saxon.sf.net/">
<xs:assertion test=". lt current-date()"
saxon:message="The date must not be in the future"/>
<xs:pattern value="[^Z:]*"
saxon:message="The date must not have a timezone"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
以下是 Xerces 处理问题的方式:
<xs:simpleType name="myPrecisionDecimal">
<xs:restriction base="xs:decimal" xmlns:xerces="http://xerces.apache.org">
<xs:totalDigits value="6" />
<xs:fractionDigits value="4" />
<xs:assertion test="string-length(substring-after(string($value), '.')) ge 2"
xerces:message="minScale of this decimal number should be 2" />
</xs:restriction>
</xs:simpleType>
此外:这些扩展中的任何一个是否处理 Schematron assert 标签中的 <sch:name/>
或 <sch:value-of/>
标签之类的东西 <sch:assert test="..."/>
?
关于撒克逊,没有办法参数化消息。但是,您可以要求 Saxon 生成一份 XML 格式的报告,其中包含有关无效的所有信息以及有关它们出现位置的上下文信息,并且您可以 运行 将此报告转换为 assemble将信息转换成您喜欢的任何形式(包括,例如,显示源文档并用红线标出无效元素的交互式再现)。
我被要求研究在 MarkLogic 环境中使用 1.1 版 XML 模式将 Schematron 断言折叠到 XML 模式中。
XSD 1.1 没有指定的一件事是自定义错误消息的使用,因为它们在 Schematron 文件中。
我发现 Saxonica 和 Xerces 都有解决该问题的扩展。
以下是 Saxonica 处理问题的方式:
<xs:element name="date">
<xs:simpleType>
<xs:restriction base="xs:date" xmlns:saxon="http://saxon.sf.net/">
<xs:assertion test=". lt current-date()"
saxon:message="The date must not be in the future"/>
<xs:pattern value="[^Z:]*"
saxon:message="The date must not have a timezone"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
以下是 Xerces 处理问题的方式:
<xs:simpleType name="myPrecisionDecimal">
<xs:restriction base="xs:decimal" xmlns:xerces="http://xerces.apache.org">
<xs:totalDigits value="6" />
<xs:fractionDigits value="4" />
<xs:assertion test="string-length(substring-after(string($value), '.')) ge 2"
xerces:message="minScale of this decimal number should be 2" />
</xs:restriction>
</xs:simpleType>
此外:这些扩展中的任何一个是否处理 Schematron assert 标签中的 <sch:name/>
或 <sch:value-of/>
标签之类的东西 <sch:assert test="..."/>
?
关于撒克逊,没有办法参数化消息。但是,您可以要求 Saxon 生成一份 XML 格式的报告,其中包含有关无效的所有信息以及有关它们出现位置的上下文信息,并且您可以 运行 将此报告转换为 assemble将信息转换成您喜欢的任何形式(包括,例如,显示源文档并用红线标出无效元素的交互式再现)。