问题标签 [schematron]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
516 浏览

schematron - 实施 schematron 规则

我是 schematron 的新手,我有以下问题。这是来自 xhtml 文件的片段:

我想创建一个规则来检查是否有provisionthen header/div@class=desig/span@class=numrequired 和 glossaryrequires dl。我一直在尝试这样但它不起作用:

任何帮助,将不胜感激。谢谢

0 投票
1 回答
759 浏览

xml - 如何将xml转换为schematron

谁能解释一下如何将xml文件转换为schematron文件进行验证?我正在研究 oracle soa,但我无法弄清楚如何。

0 投票
1 回答
457 浏览

xslt - 查找 XPath 表达式的相对构造(算法)

我遇到了一个有趣的需求,我已经有自己的工作实现,但我正在努力确保我已经涵盖了所有极端情况。

我想要实现的最好描述为“XPath 条件委托”。

假设某种晦涩的模式语言可以使用任意 XPath 条件来约束实例元素。这些条件被转换为 Schematron 断言,然后应用于 XML 实例文档。为了使其工作,每个条件都需要一个上下文节点来测试表达式(这就像说:“在 XML 实例文档中找到某个元素,然后检查 XPath 条件是否适用于它”)。事情是; 可以为虚拟/抽象节点定义我的模式语言中的某些条件,这些节点从未出现在实例文档中(xsd:choice 在这里可能是一个合适的类比——它只存在于语言文件中,而不存在于实例中)。所以我想,好吧,让我们简单地将条件从父虚拟节点委托给子节点,实际出现在 XML 实例中。结果很好!如果您只使用绝对 XPath 位置路径,那就是......

模式语言的假设示例:

这基本上是说,允许<smth>具有 a<c-enabled>和一个<foo>子元素的元素,并且 if<c-enabled>的值'true'也允许 a<one>或一个<two>子元素。有效实例文档的示例:

因此,如前所述,我决定将条件委托给<one>and <two>,实质上是在运行时将上述模式重构为以下内容:

这显然只有在使用绝对路径编写 XPath 条件时才有效。每次在实例文档中遇到<one>or<two>时,都会通过将它们用作初始上下文节点来检查条件(它们是current()XSLT 中返回的内容)。

因此,在阅读了一些XPath 规范并使用结合此语法的精彩ANTLR4 工具创建 XPath 解析器并实现了转换解析树步行器之后,我现在将原始模式重构为:

请注意,这只是我正在处理的 XPath 条件的一个简单示例(这不是简单地编写正则表达式来处理它的问题),因为它们是完全任意的,由创建模式定义的人组成。关于它们,我唯一可以确定的是它们是有效的 XPath 1.0 表达式(只有基本函数,没有变量)。


所以我的问题是:根据 XPath 1.0 规范,XPath 表达式中可能出现引用初始上下文节点(以相对方式)的构造的位置是什么?

我目前的假设是:任何在解析树中没有以下祖先的RelativeLocationPath : AbsoluteLocationPathPredicate。如果 RelativeLocationPath 前面有一个 AbsoluteLocationPath,则该组合形成一个绝对构造。在谓词中,所有路径都指向不同的上下文节点或者是绝对的。

我假设这是基于我制作的这张图(表示使用我上面提到的语法解析 XPath 时如何调用产品): 语法图


下面是一些我需要在 XPath 表达式中找到的地方的示例。基本上是在寻找这些(可能还有其他)的正式定义。


0 投票
2 回答
936 浏览

xpath - Schematron 测试内容节点的文本(直到某个位置)

我想编写一个 Schematron 规则来测试其中的值是今年、去年还是明年。

问题是该值可能包含年份范围,例如:2013-2014。我只想测试(2013)文本节点的前四位。

这是我写的,但它不正确。你能返回一个文本节点的位置吗?

XML 文件:

Schematron 规则:

验证 XML 文件时,会触发规则,但 2013 年是有效年份:发布年份 (pub-date[@pub-type='epub-ppub']/year) 为“2013-2014”。应该是今年(2013 年)、去年或明年。

0 投票
1 回答
327 浏览

xml - 将 Schematron 与 Perl 一起使用

我正在尝试阅读有关 Schematron 和 Perl 的文章。

http://www.xml.com/pub/a/2002/01/23/perl-schematron.html?page=2

我的目标是使用 Schematron 和 RelaxNG 来验证 Docbook 5 文档。

但是,我似乎无法让这个基本示例起作用。这是我从 O'Reilly 文章中复制的 Perl 脚本:

我这样调用脚本:

perl schematron.pl path-to-docbook.sch path-to-xml-file

我得到了与命名空间“db”有关的错误:

我的 docbook.sch 文件开始如下。它是 Docbook 5 发行版附带的 docbook.sch 模式文件:

会不会是 Perl 模块使用了不理解命名空间的 Schematron 版本?或者可能是 docbook.sch 不正确?那会很奇怪,因为它随 Docbook 发行版一起提供。

我可能缺少一些基本的东西,因为我是 Schematron 的新手。

0 投票
1 回答
225 浏览

xml - Schematron sh 脚本不正常

我为 Schematron 找到了一个 shell 脚本,您应该能够提供 Schematron 模式和 XML 文档,以便将 Schematron 规则应用于 XML 文档。我在这里找到了脚本:

https://code.google.com/p/schematron/wiki/RunningSchematronWithGNOMExsltproc

脚本使用的各种 xsl 文件可从此处的 Schematron 发行版下载:

http://www.schematron.com/implementation.html

为方便起见,我将在这里重复 shell 脚本。

我像这样运行脚本:

run_schematron.sh docbook1.sch my_xml.xml

shell 脚本生成中间文件 step1.xsl、step2.xsl 和 step3.xsl。但是我已经在 step2.xsl 中偏离了轨道,因为它看起来像这样:

对我来说,这看起来不像 XSL 样式表。有任何想法吗?

0 投票
2 回答
526 浏览

xml - 在浏览器中针对 Schematron 验证 XML

Internet 浏览器支持针对 XSD 验证 XML,但是否存在任何插件可以增强这些功能以包括 Schematron 或 RELAX NG?我正在寻找一种适用于 Internet Explorer 的软件。

0 投票
1 回答
663 浏览

xml - XML Schematron 验证

这个 xml 文件

和这个 xsd 文件

和这段代码

我正在使用 NMatrix.Schematron 验证器,但它不正确。该方法并不总是异常。

0 投票
1 回答
659 浏览

xml - 如何验证跨文档引用?

我想从我为另一个 xml 制作的 xsd 检查另一个 xml 中是否存在属性。
例如,我有这个 xsd

我还有另一个xsd

并且我想确保在第一个 xsd 中命名name的元素的命名model 属性存在于第二个 xsd中key元素的命名属性中 ,换句话说,如果第一个 xsd 中命名的属性值不存在于第二个xsd,一定会出错。 xml 示例: 第一个 xsd 的 xml:value
name

第二个xsd的xml:

它必须告诉存在错误,因为word第二个 xml 中没有具有属性的标记,B 这会在 xsd 中发生吗:)?
虽然这是一个正确的

0 投票
1 回答
832 浏览

xml - 系统功能匹配在 Oxygen schematron 验证中不起作用

我正在使用 OXygen XML Developer 15 针对 schematron 运行 XML 文件验证。我在系统函数“匹配”上遇到错误,如下所示

我在互联网上搜索了答案,发现这个帖子表明这是一个氧气问题。但是,这个帖子就像6年前一样。我不敢相信问题仍然存在。或者我在这里缺少什么。

尽管我真的很喜欢 oXygen,但我不必使用它。所以如果我不能解决这个问题,有人可以推荐一个可以进行 schematron 验证的替代 XML 工具吗?

以下是我的schematron的全部内容: