/ / Dynamické vyvolanie XQuery v eXist-db ako v MarkLogic - marklogic, exist-db

Dynamické vyvolanie XQuery v eXist-db ako v MarkLogic - marklogic, exist-db

V MarkLogic používame xdmp:invoke funkciu dynamicky vykonať XQuery a prejsť niektorými parametrami. Existuje ekvivalent v systéme eXist-db, a ak áno, mohol by ste to poskytnúť napríklad?

odpovede:

4 pre odpoveď č. 1

Existuje niekoľko spôsobov, ako to urobiť v eXistu, v závislosti od toho, čo sa snažíte dosiahnuť jedným spôsobom, môže byť lepší ako iný.

1) Hodnotenie externého dotazu:

util:eval(util:base64-decode(util:binary-doc("/db/other.xqy") cast as xs:string))

2) Dynamický import externého modulu do kontextu:

util:import-module("http://my-other-module-ns", "other", "/db/other.xqy"),
util:eval("other:some-function("hello")")

UPDATE

Dôležitý doplnok od Wikibook XQuery:

Keďže menný priestor je deklarovaný dynamicky, importované funkcie musia byť vyvolané pomocou util: eval.