我正在用Java编写库,它使用OSB中提供的oracle库执行XQuery
其中一个XQuery包含:
<cfgEndDate>{ fn-bea:date-from-dateTime($endDate) }</cfgEndDate>
XQuery在OSB环境中甚至在Eclipse中都能正常工作。
尽管如此,使用Java执行XQuery (我从OSB发行版中获取xquery.jar
)的尝试还是导致了一个异常:
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
的Java引擎。
发布于 2014-06-19 23:14:49
尝试使用Oracle处理器XQuery (XQJ )。它支持XQuery 3.0特性
http://orafmwsoa.blogspot.com/2014/06/running-xquery-from-java-applications.html
https://stackoverflow.com/questions/11861845
复制相似问题