首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用XQuery引擎的bea函数

在Java中使用XQuery引擎的bea函数
EN

Stack Overflow用户
提问于 2017-03-21 13:55:24
回答 1查看 997关注 0票数 0

经过一些研究,我还没有找到解决办法,但很多人都有这个问题:

我试图在XQuery应用程序中使用

代码语言:javascript
复制
net.sf.saxon.s9api

但是,当我试图编译XQueryExecutable exec = compiler.compile(...));我的XQuery时,我得到了这个错误:

代码语言:javascript
复制
    Error on line 13 column 3 of AivPumaRequest.xquery:
  XPST0081 XQuery static error near #... fn-bea:inlinedXML(fn:concat#:
    Prefix fn-bea has not been declared
Error on line 44 column 102 of AivPumaRequest.xquery:
  XPST0081 XQuery static error near #... div xdt:dayTimeDuration('P1D'#:
    Prefix xdt has not been declared
Error on line 199 column 3 of AivPumaRequest.xquery:
  XPST0081 XQuery static error near #... fn-bea:inlinedXML(fn:concat#:
    Prefix fn-bea has not been declared
Error on line 282 column 4 of AivPumaRequest.xquery:
  XPST0081 XQuery static error near #... {fn-bea:inlinedXML(fn:concat#:
    Prefix fn-bea has not been declared

net.sf.saxon.s9api.SaxonApiException: Prefix fn-bea has not been declared

是否有一种静态包含此前缀的方法,或者我遗漏了什么,以便我的XQuery引擎(SAXON)找到前缀?

EN

回答 1

Stack Overflow用户

发布于 2017-03-21 14:34:42

问题的简单答案是,您可以在查询prolog中使用

代码语言:javascript
复制
declare namespace fn-bea = "http://some-appropriate-uri";

或在Saxon API中使用

代码语言:javascript
复制
XQueryCompiler.declareNamespace("fn-bea", "http://some-appropriate-uri")

但是,除非(a)您知道要将前缀绑定到哪个URI,并且(b)将这些名称的函数提供给查询处理器,否则这不会对您有进一步的帮助。

对xdt:dayTimeDuration的引用向我暗示,这个查询是在XQuery仍然是一个工作草案时编写的。例如,如果您查看2005年的工作草案

代码语言:javascript
复制
https://www.w3.org/TR/2005/CR-xquery-20051103/

在第2节中,您将看到它使用了内置前缀。

代码语言:javascript
复制
xdt = http://www.w3.org/2005/xpath-datatypes

当XQuery 1.0成为推荐时,dayTimeDuration数据类型已经移到标准XML (xs)命名空间中,因此您可能只需将"xdt“替换为"xs”--尽管您应该知道语言的语义可能也在一些次要细节上发生了变化。

至于fn-bea:inlinedXML,前缀的选择告诉我,这可能是由甲骨文接管的BEA查询处理器中内置的供应商扩展。这里的规格:

代码语言:javascript
复制
https://docs.oracle.com/cd/E13162_01/odsi/docs10gr3/xquery/extensions.html

说:

fn-bea:inlinedXML解析文本XML并返回XQuery 1.0数据模型的实例。

这表明该函数的功能非常类似于XQuery 3.0函数fn:parse-xml(),我建议您尝试在查询中进行替换。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42929193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档