Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Saxon 8-XQuery文件-Java调用_Java_Saxon - Fatal编程技术网

Saxon 8-XQuery文件-Java调用

Saxon 8-XQuery文件-Java调用,java,saxon,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.x

现在我有一个错误:

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文件名。

Ok问题来自“\”。要成为有效的URI,字符串必须只包含“/”。因此我刚刚更改了提供路径的java方法,以便将所有“\”替换为“/”现在可以了。经过调查,我猜程序运行时的路径不完全相同…仍然不知道我在哪里犯了错误…无论如何,感谢你指出了正确的方向。:-“D:”也会引起问题,因为它看起来像一个带有未知方案“D”的绝对URI。事实上,该程序将在Linux上运行,因此URI的创建方式并不重要,因为它在所有情况下都应该以文件夹名称开头,但我需要使其正常工作以测试它,并且我正在Windows上开发,所以…:-)