我有一组XQuery函数,它们表示可以执行以变换数据值的各种操作。每个函数都会取一个值,并加上一些变换所需的参数。计划是执行一系列嵌套函数调用来计算最终值。这个想法是这些管道将被配置,然后在执行之前持久化,因为相同的管道功能将以不同的起始值重复调用。因此,本以为是代表的调用堆栈一系列嵌套的XML元素,即将XQuery函数调用树序列化为XML并执行它
<mylib:escape>
<value>
<mylib:select>
<config>
<index>2</index>
</config>
<value>
<mylib:tokenize>
<config>
<delimiter>,</delimiter>
</config>
<value>
$starting-value
</value>
</mylib:tokenize>
</value>
</mylib:select>
</value>
</mylib:escape>
而在mylib中模块命名空间,我会功能:
declare function mylib:tokenize($value as xs:string, $delimiter as xs:string) as xs:string
{ ... }
declare function mylib:select($value as xs:string, $index as xs:int) as xs:string
{ ... }
declare function mylib:escape($value as xs:string) as xs:string
{ ... }
- 是这样的不好的主意,我应该采取不同的做法
- 是否有一个现有的库,可能已经提供此功能?
这篇文章被标记为MarkLogic,因为我将从MarkLogic执行此操作。
谢谢。
我想知道为什么你限制自己的mylib函数。标记化,选择和转义应该充分利用现有功能进行覆盖。如果最终用户需要指导,那么您可以依靠这些文档。 – grtjn
您是否考虑过[CPF](http://docs.marklogic.com/guide/cpf/overview)? –
@grtjn这些只是例子。将会有更多的功能,但重点是通过某种图形界面让用户可配置的处理流水线。 –