通过 Java 动态使用 XQuery 库模块

发布于 2024-09-27 06:42:17 字数 528 浏览 3 评论 0原文

通过 XQuery,您可以在查询中使用库模块。 导入

它们可以通过import module namespace mynamespace = 'com.mynamespace' at 'filename.xq';

。问题是:有没有办法确定哪个文件与模块命名空间关联,以便程序员可以动态决定吗?

例如,我的动态配置告诉 mynamespace 应与 filename1.xq ...

import module namespace mynamespace = 'com.mynamespace' at 'filename1.xq'; 关联

,然后,也许在某个用户之后点击,应该使用myfile2.xq?

'com.mynamespace' at 'myfile2.xq';

导入模块命名空间 mynamespace = Saxon,您也许可以使用 ModuleURIResolver,但解析器是商业非免费企业版的一部分。如果您在 Java 环境中,是否有解决此问题的方法?

With XQuery you can use library modules within your query. They can be imported via

import module namespace mynamespace = 'com.mynamespace' at 'filename.xq';

The question is: is there a way to determine which file is associated with the module namespace so that the programmer can decide dynamically?

For example, my dynamic configuration tells that mynamespace should be associated with filename1.xq ...

import module namespace mynamespace = 'com.mynamespace' at 'filename1.xq';

and then, perhaps after some user clicks, myfile2.xq should be used?

import module namespace mynamespace = 'com.mynamespace' at 'myfile2.xq';

If you use Java & Saxon, you can use perhaps the ModuleURIResolver, but the resolver is part of the commercial, non-free Enterprise Edition. Is there a workaround for this problem if you are in a Java environment?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

难得心□动 2024-10-04 06:42:17

选项 1

您可能需要检查 XQuery(实现)特定 API 的 eval/invoke 类型。

在 MarkLogic XQuery API 中
您可能会发现

xdmp:eval("XQUERY AS STRING") 或
xdmp:invoke(函数指针, params) 有助于实现用户实现的反射类型。

选项2
尝试使用一些基于过程语言的功能设计模式来解决此类问题。

请记住:使用“eval”类型 API 时,您还必须对 XQuery 注入非常谨慎。

Option 1

You may want to check with eval/invoke type of XQuery-(Implementation) specific APIs.

In MarkLogic XQuery API
you may find

xdmp:eval("XQUERY AS STRING") or
xdmp:invoke(function pointer, params) helps to achieve reflection type of user implementation.

Option 2
try to have some Procedure language based functional design patterns to resolve such issues.

REMEMBER: Using "eval" type APIs you have to be very cautious about XQuery Injection too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文