schematron 中用于验证 xml probatron + saxon 的 base-uri 函数

base-uri function in schematron for validating xml probatron + saxon

提问人:benchpresser 提问时间:8/15/2017 最后编辑:vvvvvbenchpresser 更新时间:12/14/2022 访问量:398

问:

我们使用 probatronsaxon 来验证测试 xml,使用我们的 java 应用程序中的给定 sch 文件。最近,sch 文件中添加了一条新规则,例如

<let name="foo" value="base-uri()">

某些规则使用该值,但$foo包含空字符串,规则将失败。我必须在哪里设置此值?我按照 https://www.w3.org/TR/xmlbase/ 中所述将 xml:base 标签添加到测试 xml 中,但它不起作用。我必须在 java 端设置 sth 吗?

Java XML 解析 Saxon XML 验证

评论


答:

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.