问题标签 [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 回答
188 浏览

xml - 可选元素的 Schematron 计算测试

我需要在 XML 发票中创建一组 Schematron 规则测试计算。问题是一些测试元素是可选的,当测试元素mjissing时我的规则失败。如何指定类似:“如果元素存在则测试值”?

XML 实例摘录:

我的 Schematron 检查计算:

当 amountInclusiveAllowancesCharges 和 invoiceAllowanceChargeAmount 缺失时,它会失败(它们是可选的。

我将不胜感激任何有用的提示,

伊娃

0 投票
1 回答
1580 浏览

xml - 获取所有前面/后面的兄弟文本内容

考虑以下 XML:

p34 应该通过,因为粗体标签的字母之间没有字母
p35 应该通过,因为粗体标签的外部没有字母字符
p36 应该通过,因为粗体文本和其他文本之间没有字母
p37 应该通过,因为粗体文本和其他文本
之间没有字母 p38 应该失败,因为粗体 alpha 字符之间没有 alpha 字符
p39 应该失败,因为粗体文本和“foo”或“bar”之间没有 alpha 字符

我通过 schematron 尝试这样做是这样的:

这样做的问题是它只查看当前上下文的父级的直接子文本节点。因此,p38 不会失败,因为没有直接的子文本节点。此外,类似的东西b<foo>bar <bold>pass</bold>会失败,因为它只会看到“b”preceding-sibling::text()而不会看到"foo ".

我也尝试过::*/text()代替::text(),但后来我遇到了类似的问题,因为我只看到兄弟元素中的文本,没有得到直接的兄弟文本节点。我需要把这两个东西放在一起,有人知道怎么做吗?


例如,在这个 xml 中:

当上下文规则命中<bold>THIS</bold>并检查前面时,我希望它看到"hello bar ",当检查以下时,我希望它看到" bargoodbye".

0 投票
1 回答
561 浏览

python - etree schematron 验证扩展标签

我正在尝试通过使用一组包含其他模式的模式来验证 xml。

主要架构师:

常见的schmatron:

问题是,在主模式中,如果我直接放置一个断言标签,例如:

在“规则”标签之间,像这样:

比 etree 的 isoschematron.Schematron 类验证我的主要 schematron。否则它会抛出这样的错误:

我已经用 etree.Schematron 类进行了尝试,它也抛出了“SchematronParseError: invalid schematron schema:”。

我在想问题是关于schematron的

标签。我的意思是,当 schematron 使用外部规则断言时会出现错误。

使用 python 与相关和联合 schematron 一起工作的正确方法是什么?

提前致谢。

0 投票
1 回答
294 浏览

xslt - XPath/Schematron 等效于“xsl:value-of”

我构建了一个 schematron 模式,发现了一个意外错误。

我试图将字符串(例如“Robinson 1983”)与 xsl 函数的输出进行比较。我的功能是这样的

所以,在 schematron

返回“false”,因为函数的输出是由三个文本元素组成的序列。

我能够使用 xslt 解决这个问题

正如预期的那样回馈“真实”。

但我想知道:如何在“纯”Schematron/XPath 中解决这个问题?有没有等效于 xsl:value-of 的?即将一个序列变成一个字符串,去掉其他内容。我认为这是您想在 XPath 中做的最重要的事情之一,但我没有找到解决方案。

0 投票
1 回答
751 浏览

xpath - XPath:嵌套/复杂条件

我的 xml 数据的某个元素应符合以下条件之一:

1.) 它有一个@when 属性,没有别的。

2.) 它有一个 @when-iso 属性,没有别的。

3.) 它同时具有@notBefore-iso 和@notAfter-iso 属性,但既没有@when 也没有@when-iso 属性。

我尝试使用 schematron 进行测试,但无法创建匹配的 xpath 表达式。

我试过了

但这不起作用。显然,括号中的内容被简单地忽略了。那么,如何构建复杂/嵌套的条件表达式?

0 投票
1 回答
223 浏览

javascript - Can external scripts be used inside Schematron rules?

Is there a way to call Javascript functions in a Schematron rules file?

I'm pretty sure that the engine takes the rules file and generates an XSLT from it but was wondering if I can somehow include scripts in that rules file that will ultimately wind up in the XSLT?

Amongst other things it would be useful for validation rules that involve a lot of string parsing such as this:

And turn it into something like:

Thanks for any help.

0 投票
2 回答
888 浏览

validation - 检查兄弟元素中的重复属性数据 - Schematron

我正在尝试在 Schematron 中编写一个检查,以确保没有元素包含重复的属性数据。这些元素位于 XML 文档中的特定位置,我有定位它们的 XPATH。

例如:

应该失败,因为它具有重复的 foo 和 bar 属性值。

这应该通过,因为 foo 属性不一样。

我不确定这对于 Schematron 是否太复杂。

有什么想法吗?

0 投票
0 回答
764 浏览

xml - 为什么我的 XSLT(来自 Schematron)不验证我的 xml 文件?

我正在尝试验证 XML 文件。我创建了一个简单的 Schematron (.sch) 文件,并将其转换为 XSLT 文件(使用氧气)。同样在氧气中,所有验证都按预期工作。但是,我有一个用 JAVA(相当复杂)编写的自定义服务来处理转换。(我知道该服务可以正常工作,因为我已经将它与许多其他 xml->xslt 文件一起使用了一段时间)。然而让我好奇的是,为什么由 Oxygen 生成的 XSLT 不起作用(或者我只是不知道它起作用)。通常,当 xml 转换服务处理 XSLT 文件(并且失败)时,它会引发错误。在这种情况下,它不会引发错误,并且我的 XML 文件会消失?IE 如果我更改 XSLT 文件中的一个值,因此消息应该故意失败,服务仍然不会引发错误?问题是我如何知道使用这个 XSLT 文件时转换何时失败?我可以打印诸如“验证失败”之类的东西吗?

这是我由 Oxygen 生成的 XSLT

这是我要验证的 XML 文件

0 投票
1 回答
260 浏览

xml - Schematron 无法验证 XML?

我正在使用Oxygen针对Schematron验证我的 XML 。由于某种原因(我看不出我的错误在哪里),XML 没有得到验证/氧气引发错误。为什么?

这是我的 XML 文本:

我写的Schematron看起来像这样:

这是一个非常基本的 Schematron,但它会引发错误。为什么?

0 投票
0 回答
1862 浏览

xsd - XML 验证:XSD 还是 Schematron?

我需要加强对中等复杂模式(SAML 元数据)的验证,包括大约。10 个 XSD 文件,提供 1000 行模式定义。验证应该主要要求可选元素和属性,将节点和属性内容限制为某些值,对推荐或弃用的元素和属性发出警告,并拒绝不属于模式的任何内容,包括原始模式的扩展元素中的内容。最好的方法是什么?普通的 XSD、XSD + 断言、Schematron,还是使用某种语言来解析文档?