通过 Java 动态使用 XQuery 库模块
通过 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
选项 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.