我想知道是否有办法内省XQuery模块并动态访问函数。这将有助于我实现GOF策略模式,因为XQuery不支持同一接口的多个实现。
问题当然是除了检查变量类型之外,似乎不支持XQuery中的内省。
关于如何在XQuery中实现此模式的任何想法? (我使用MarkLogic 9)
非常感谢, ķ。
PS。不幸的是,我发现的大多数XQuery资源都集中在这个或那个功能的小细节上,但我找不到一个这样的资源,它本身就把XQuery作为一种严肃的编程语言,并解决了这样的软件设计问题
答案 0 :(得分:1)
XQuery 3.0+和MarkLogic 9支持一流的功能。在许多情况下,您可以使用一流函数和依赖注入将常见的OO设计模式重新编写为函数式编程等效项。
此外,您可以通过xdmp:functions()
访问范围内的功能。
有一种方法可以在ML中获得类似反射的功能,但它有点像黑客。看看这个库,它抛出一个异常,捕获它,并使用异常有效负载来检查堆栈:
https://github.com/marklogic/cq/blob/master/lib-debug.xqy
对于更多XQuery编程模式和技术,您可能希望查看来自各种面向XML的会议(如Balisage,XML Prague和XML London)的会议记录。此外,搜索GitHub repos以获取XQuery项目和阅读代码可能会有所帮助。