我有一組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這些只是例子。將會有更多的功能,但重點是通過某種圖形界面讓用戶可配置的處理流水線。 –