Saxon 8 - XQuery 文件 - Java 调用

Saxon 8 - XQuery file - Java call

现在我有这个错误:

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 的接口提供 Windows 文件名(D:\Users\***\workspace\**...}。

我不知道 dpr:getApplicationProperty() 做了什么,但如果在不同的命名空间中有两个版本,那么它们可能会做不同的事情,所以一个成功而另一个失败也就不足为奇了。

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