4

我正在用 Java 编写库,它使用 OSB 中提供的 oracle 库执行 XQuery

XQuery 之一包含:

<cfgEndDate>{ fn-bea:date-from-dateTime($endDate) }</cfgEndDate>

XQuery 在 OSB 环境甚至 Eclipse OEPE 中都能正常工作

尽管如此,尝试使用 Java 执行 XQuery(我xquery.jar从 OSB 发行版中获取)导致了异常:

oracle.xquery.XQException: XPST0081: It is a static error if a QName used in an 
expression contains a namespace prefix that cannot be expanded into a namespace URI by 
using the statically known namespaces.

Detail: Undeclared namespace prefix 'fn-bea' 

at oracle.xquery.PreparedXQuery.<init>(PreparedXQuery.java:202)
at oracle.xquery.PreparedXQuery.<init>(PreparedXQuery.java:128)
at oracle.xquery.XQueryContext.prepareXQuery(XQueryContext.java:424)

更新1:

我刚刚尝试使用net.sf.saxon.query库做同样的事情。它也无法管理此功能:

XPST0081 XQuery static error near #...>{ fn-bea:date-from-dateTime($#:
Prefix fn-bea has not been declared
net.sf.saxon.trans.XPathException: One or more static errors were reported during
query analysis

    at net.sf.saxon.query.QueryParser.parseQuery(QueryParser.java:344)
    at net.sf.saxon.query.QueryParser.makeXQueryExpression(QueryParser.java:140)
    at net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:536)

更新 2

我发现该fn-bea:date-from-dateTime()函数位于 weblogic 中:

com.bea.core.xquery_1.3.0.0.jar
package weblogic.xml.query.runtime.datetime.ext
class DateFromDateTime

但是我没有发现将它与已知的 XQuery 引擎一起使用的任何可能性,而且,希望使用所有fn-bea功能,而不仅仅是这个。

有谁知道如何解决这个问题或建议一个支持fn-bea.

4

1 回答 1

0

尝试使用 Oracle XQuery Processor for Java (XQJ API)。它支持 XQuery 3.0 特性

http://orafmwsoa.blogspot.com/2014/06/running-xquery-from-java-applications.html

http://docs.oracle.com/cd/E16655_01/appdev.121/e17604/adx_j_xqj.htm

于 2014-06-19T23:14:49.623 回答