问题标签 [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 投票
2 回答
7497 浏览

java - 验证 XML 文档会导致“1 字节 UTF-8 序列的字节 1 无效”。

我正在使用Probatron4j验证一些 XML 文件对Schematron样式表,它在内部使用 Saxon。大多数情况下,这工作正常,但偶尔,处理崩溃并出现错误

org.xml.sax.SAXParseException:1 字节 UTF-8 序列的字节 1 无效。

我的研究表明,此消息通常表明(无特定顺序)

  • 明显无效的数据(例如,试图像读取 XML 文件一样读取 ZIP 文件);
  • 字节顺序标记的存在;
  • 存在 UTF-8 中不合法的字符;或者
  • 声称是 UTF-8 编码的文档是在说谎。

这些都不适用于我正在处理的文档。我在程序执行期间检查了字节数组形式的输入,它不包含 BOM 或任何非 ASCII 字符。

处理在我的 30kb 文档中大约进行了五分之一,然后在一个不起眼的英文句子上崩溃(通过“不起眼”,我的意思是所有字节都在 32(空格)和 122(小写 z)之间;换句话说,标准键盘字符)。所谓的违规元素的字节在这篇文章的末尾。

奇怪的是,失败的文档是通过从一个较大的文档中删除一些元素生成的,这些元素由相同的代码干净地处理。

我知道异常是在实现接口parse(InputSource input)的对象的方法中引发的。org.xml.saxXMLReader根据JavadocSAXException表示

任何 SAX 异常,可能包含另一个异常。

在调试器中检查异常表明没有包装异常。

什么可能导致此错误?

编辑:

第三次出现后抛出异常109

0 投票
1 回答
188 浏览

xml - 使用兄弟排序将 XML 转换为 JSON (Schematron for JSON)

我有一个信息系统,我们可以像这样在 XML 中提出查询:

这个兄弟顺序很重要,并且由 schematron(条件之间的逻辑运算符)强制执行。

如何在 JSON 中表示这些数据,同时保留其语义?JSON变成了类似的东西

并且丢失了很多语义信息。如何在 JSON 中编码所有这些信息

0 投票
1 回答
399 浏览

attributes - 使用 schematron 计算属性数

我正在尝试使用 Schematron 检查属性的存在。

如果有“TreeView id”,它必须已经存在于“Page id”中

所以我试图计算与我的“Treeview id”同名的“Page id´s”,它们必须> = 1:

我究竟做错了什么?谢谢你的帮助!

0 投票
1 回答
2160 浏览

xml - Schematron 条件验证

我最近开始使用 schematron 来验证 xml 文档。到目前为止,我对它印象深刻,但我偶然发现了一条我无法正常工作的规则。

我在下面做了一个简单的例子。

基本上我想验证两件事,如果ns1:some-element/text()包含'false',ns1:same-other-element应该存在,并且验证确实有效。但是,当ns1:some-element/text()包含 false 以外的内容时,我不在乎天气 ns1:same-other-element 是否存在。

此时,当 ns1:same-other-element 缺失且 valuens1:some-element/text()不是 'false'时,也会触发该规则

任何想法如何解决这个问题?

0 投票
1 回答
145 浏览

xsd - XML 是否有可能具有有效的模式但没有 XML 文档?

我怀疑是否有一些模式具有有效模式但没有一些 XML 文档?如果有,你能给我举一些例子吗?

0 投票
1 回答
1140 浏览

regex - 如何使用 Schematron 测试来测试特殊字符?

我正在尝试设置一个 schematron 测试来验证 XML 中的特殊字符...

更具体地说,我想在出现版权符号 (Unicode U+00A9) 的地方发出警告。

当对规则使用以下任何符号时,似乎无法解析 schematron xml 文件...

那里有任何 schematron 专家知道如何将 unicode 字符嵌入到正则表达式中吗?

提前致谢...

0 投票
1 回答
809 浏览

xml - 使用 Schematron 识别 xml 文本元素

是否可以在 XPath 中制定一个规则来识别像这样的 xml 元素:

?

我正在使用 Schematron,我需要指定某些元素不能像示例中的那样具有子元素,这就是我需要识别它们的原因。

提前致谢

0 投票
2 回答
179 浏览

string - 将字符串转换为路径表达式 - Schematron

伙计们

我正在使用 schematron,我需要执行以下操作:

有时在我想要验证的 xml 文档中,有这样的元素:

对于这些元素(其中 name() 中间有一个点),我需要在 xml 文件中查看是否有一个名为 Var 的目录,其子元素具有属性 name = X (在这种情况下),如下所示:

我想将这些对象的 name() 转换为表示路径的字符串,因此对于这种情况尤其如此:

Var.X 将是 /*/Var/child::*[@name="X"]

有了这个字符串,然后我想检查实际上是否存在属于字符串所代表的路径的元素,但是我不能将字符串转换为路径类型,我什至不知道这是否可能......

有没有更简单的方法来做到这一点?

0 投票
2 回答
301 浏览

xml - Schematron 计算错误

我有以下 xml 文件:

在我的 schematron 文件中,我想让 TotalCosts 与 paymentSchedule 中的金额相同。

为此,我需要为每个 PaymentSchedule 执行以下操作:

金额 * NumberOfPayments

之后,我需要取所有 PaymentSchedules 的总和,这个数字应该完全相同。如果您对给定的示例尝试此操作,您将看到数量完全相同。

为了在 schematron 中验证这一点,我创建了这个 schematron 文件:

但这是我遇到问题的地方。我得到以下验证结果:

Paymentschedule(31003.000000000004) 中的金额与总金额不匹配 (31003) (func:getPaymentScheduleTotal(.) = number(TotalCosts)) [assert]

我不知道 .000000000004 是从哪里来的。我当然可以使用像 floor 这样的东西来四舍五入,但我相信 .000000000004 一开始就不应该在那里。

有任何想法吗?

0 投票
2 回答
891 浏览

xml - 如何在 SVRL 中获取 Schematron 规则上下文的 XPath 表达式?

使用ISO Schematron(使用 XSLT1),如何在验证报告中获取规则匹配上下文的 XPath?1

尝试为每个断言测试获取 XPath 显然是没有意义的,但是如果暴露给应用程序层,则重新查找应用的上下文元素的方法对于自动化处理(例如字段突出显示)将非常方便。


1我今天找到了答案,经过一番搜索后,我发现“明显”的解决方案只是偶然发现的,而不是预期的关键字 - Schematron 肯定在 2003/2007 年达到了鼎盛时期。如果没有提交的答案,我会自己回答(一两天内),但我更喜欢提交的答案。