java - Saxon 8 - XQuery 文件 - Java 调用

标签 java saxon

现在我遇到了这个错误:

Error on line 10 of *module with no systemId*:
  FODC0005: Exception thrown by URIResolver: Invalid relative URI
  {D:\Users\***\workspace\**...}: Illegal character in opaque part at index 2:
  D:\Users\***\workspace\***/JDPR/config/Rules.xml
Error at xsl:copy-of on line 13 of *module with no systemId*:
  FODC0005: Exception thrown by URIResolver: Invalid relative URI
  {D:\Users\***\workspace\**...}: Illegal character in opaque part at index 2:
  D:\Users\***\workspace\***/JDPR/config/Rules.xml
; SystemID: *module with no systemId*; Line#: 13; Column#: -1
net.sf.saxon.trans.DynamicError: net.sf.saxon.trans.DynamicError: Exception thrown by URIResolver
    at net.sf.saxon.functions.Document.makeDoc(Document.java:275)

相关的 XQuery 部分是:

(:declare namespace dpr="java:util.DPRConfigurationLoader";:)
declare namespace dpr="java:com.*****.common.util.DPRConfigurationLoader";
declare variable $rules as node()* := doc(dpr:getApplicationProperty('Common','RulesFileLocation'))//category;

如果我按此处所示运行此 xquery,则会出现错误。 如果我取消注释第一行并注释第二行,则不会出现错误。

在 Java 程序中,我修改了 Xquery 文件并删除了字符串“com.*****.common”。使该行变得与注释行相同。

所以我不明白为什么一个版本工作正常,而另一个版本在执行时是相同的,却不能。

如果有人发现问题出在哪里......:-)

最佳答案

您正在向需要 URI 的接口(interface)提供 Windows 文件名 (D:\Users\***\workspace\**...}。

我不知道 dpr:getApplicationProperty() 是做什么的,但是如果在不同的命名空间中有它的两个版本,那么它们可能会做不同的事情,所以一个成功并且其他失败。

doc() 函数的参数必须是 URI,而不是 Windows 文件名。

关于java - Saxon 8 - XQuery 文件 - Java 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52005859/

相关文章:

Java-新方法中伯努利数的实现

java - 实体可能不存在的 JPA 一对一关系

java - OpenJDK 8 (1.8.0_232) 和某些 HTTPS 连接是否存在导致 HTTP 错误 403 的已知问题?

java - 在 Java 中美化 GraphQL 查询字符串

java - JaxB xjc 生成的 pojos 包含空白命名空间

java - 在 JavaFX 中旋转和移动 TriangleMesh。保存时如何转换数据?

XPath:根路径表达式开头的 «/» 运算符与什么完全匹配?

xml - 使用 ant 和 xslt 动态连接 xml 文件

c++ - 我如何在 saxon/c 中使用已编译的样式表?