问题标签 [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.
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
根据Javadoc,SAXException
表示
任何 SAX 异常,可能包含另一个异常。
在调试器中检查异常表明没有包装异常。
什么可能导致此错误?
编辑:
第三次出现后抛出异常109
。
xml - 使用兄弟排序将 XML 转换为 JSON (Schematron for JSON)
我有一个信息系统,我们可以像这样在 XML 中提出查询:
这个兄弟顺序很重要,并且由 schematron(条件之间的逻辑运算符)强制执行。
如何在 JSON 中表示这些数据,同时保留其语义?JSON变成了类似的东西
并且丢失了很多语义信息。如何在 JSON 中编码所有这些信息
attributes - 使用 schematron 计算属性数
我正在尝试使用 Schematron 检查属性的存在。
如果有“TreeView id”,它必须已经存在于“Page id”中
所以我试图计算与我的“Treeview id”同名的“Page id´s”,它们必须> = 1:
我究竟做错了什么?谢谢你的帮助!
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'时,也会触发该规则
任何想法如何解决这个问题?
xsd - XML 是否有可能具有有效的模式但没有 XML 文档?
我怀疑是否有一些模式具有有效模式但没有一些 XML 文档?如果有,你能给我举一些例子吗?
regex - 如何使用 Schematron 测试来测试特殊字符?
我正在尝试设置一个 schematron 测试来验证 XML 中的特殊字符...
更具体地说,我想在出现版权符号 (Unicode U+00A9) 的地方发出警告。
当对规则使用以下任何符号时,似乎无法解析 schematron xml 文件...
那里有任何 schematron 专家知道如何将 unicode 字符嵌入到正则表达式中吗?
提前致谢...
xml - 使用 Schematron 识别 xml 文本元素
是否可以在 XPath 中制定一个规则来识别像这样的 xml 元素:
?
我正在使用 Schematron,我需要指定某些元素不能像示例中的那样具有子元素,这就是我需要识别它们的原因。
提前致谢
string - 将字符串转换为路径表达式 - Schematron
伙计们
我正在使用 schematron,我需要执行以下操作:
有时在我想要验证的 xml 文档中,有这样的元素:
对于这些元素(其中 name() 中间有一个点),我需要在 xml 文件中查看是否有一个名为 Var 的目录,其子元素具有属性 name = X (在这种情况下),如下所示:
我想将这些对象的 name() 转换为表示路径的字符串,因此对于这种情况尤其如此:
Var.X 将是 /*/Var/child::*[@name="X"]
有了这个字符串,然后我想检查实际上是否存在属于字符串所代表的路径的元素,但是我不能将字符串转换为路径类型,我什至不知道这是否可能......
有没有更简单的方法来做到这一点?
xml - Schematron 计算错误
我有以下 xml 文件:
在我的 schematron 文件中,我想让 TotalCosts 与 paymentSchedule 中的金额相同。
为此,我需要为每个 PaymentSchedule 执行以下操作:
金额 * NumberOfPayments
之后,我需要取所有 PaymentSchedules 的总和,这个数字应该完全相同。如果您对给定的示例尝试此操作,您将看到数量完全相同。
为了在 schematron 中验证这一点,我创建了这个 schematron 文件:
但这是我遇到问题的地方。我得到以下验证结果:
Paymentschedule(31003.000000000004) 中的金额与总金额不匹配 (31003) (func:getPaymentScheduleTotal(.) = number(TotalCosts)) [assert]
我不知道 .000000000004 是从哪里来的。我当然可以使用像 floor 这样的东西来四舍五入,但我相信 .000000000004 一开始就不应该在那里。
有任何想法吗?
xml - 如何在 SVRL 中获取 Schematron 规则上下文的 XPath 表达式?
使用ISO Schematron(使用 XSLT1),如何在验证报告中获取规则匹配上下文的 XPath?1
尝试为每个断言测试获取 XPath 显然是没有意义的,但是如果暴露给应用程序层,则重新查找应用的上下文元素的方法对于自动化处理(例如字段突出显示)将非常方便。
1我今天找到了答案,经过一番搜索后,我发现“明显”的解决方案只是偶然发现的,而不是预期的关键字 - Schematron 肯定在 2003/2007 年达到了鼎盛时期。如果没有提交的答案,我会自己回答(一两天内),但我更喜欢提交的答案。