提问人:benchpresser 提问时间:8/15/2017 最后编辑:vvvvvbenchpresser 更新时间:12/14/2022 访问量:398
schematron 中用于验证 xml probatron + saxon 的 base-uri 函数
base-uri function in schematron for validating xml probatron + saxon
问:
我们使用 probatron 和 saxon 来验证测试 xml,使用我们的 java 应用程序中的给定 sch 文件。最近,sch 文件中添加了一条新规则,例如
<let name="foo" value="base-uri()">
某些规则使用该值,但$foo包含空字符串,规则将失败。我必须在哪里设置此值?我按照 https://www.w3.org/TR/xmlbase/ 中所述将 xml:base 标签添加到测试 xml 中,但它不起作用。我必须在 java 端设置 sth 吗?
答:
0赞
vvvvv
12/14/2022
#1
我们使用 probatron4j 进行基于 java 的 schematron 处理:
Java 源代码部分:
javax.xml.transform.TransformerFactory t = org.probatron.Utils.getTransformerFactory();
// create xml readers, perfor template processing, apply xslt
// as stated in the probatron4j examples
// ...
t.transform(getCandidateSource(), new StreamResult(baos));
我们的修复包括:
Source source = new StreamSource(new FileInputStream(..
// or
Source source = new StreamSource(canditateURL.openStream()..
// depending on whether input source is file or url based
// below is the fix, we set path of file or exteral form of the url
source.setSystemId(pathOrUrl);
最终结果:我们设置为 systemid 的值被设置为架构中函数 val 的返回值。base-uri()
这个答案是由 OP 卧推 ahttps://stackoverflow.com/questions/45692818/base-uri-function-in-schematron-for-validating-xml-probatron-saxon 下发布的 CC BY-SA 3.0.
评论