Hi,

Thank you for taking the time to think about my problem. I am aware of 
the 'root' option but there are some cases where it can't help me. For 
example let's assume my modules root is '/code' and I open a module with 
the URI '/code/a/main.xqy'. This module has an import relative to that 
URI but also an import relative to the modules root :

     import module "urn:mod2" at "../imp.xqy";
     import module "urn:mod2" at "/b/imp2.xqy";

How can I use xdmp:eval so that both modules "/code/imp.xqy" and 
"/code/b/imp2.xqy" are found by the server ? If I set 'root' to '/code' 
than "/code/b/imp2.xqy" import will be found but not the other. If I set 
'root' to '/root/a' than the first import is found but not the second. I 
don't see any solution that will compensate for the missing URI 
information of the evaluated query ( '/code/a/main.xqy'). Am I missing 
something?

Thanks,
Alex

On 3/1/2012 5:58 PM, Michael Blakeley wrote:
> To resolve imports via xdmp:eval, set the 'root' option - just as you would 
> do to invoke a module. Take a look at how cq does it. The code is 
> Apache-licensed.
>
> If the imports aren't available on the server at all, you will have to make 
> them available. That is where the Modules database might come it. You could 
> use the server filesystem too, but using a database is cleaner. And you would 
> have to copy everything that your module(s) need.
>
> -- Mike
>
> On 1 Mar 2012, at 07:35 , Alex Jitianu wrote:
>
>> Hi,
>>
>> Unfortunately if a query is submitted through xdmp:eval you can't give a 
>> base URI for resolving any relative imports that that query might have. Or 
>> can you? So I kind of require a mix between xdmp:invoke and xdmp:eval. The 
>> "module URI"->"updated module content" mapping to be passed to the 
>> xdmp:invoke was my idea of such a mix. The server first looks for a module 
>> in the Modules database? And are you suggesting that I create a temporary 
>> structure in the Modules database in which the server will find my updated 
>> version of the modules before finding them in their real location?
>>
>> Thanks,
>> Alex
>>
>> On 3/1/2012 5:12 PM, [email protected] wrote:
>>> xdmp:eval has the static-check option too. You could send the module to it 
>>> as a string.
>>>
>>> Beyond that, the Modules database makes a dandy persistent uri->content 
>>> repository. You could have a hierarchy of temp files, perhaps something like
>>> /sync.ro/
>>> .sessions/{$SESSION}/{$RELATIVE-PATH}. Use a scheduled task to clean out 
>>> anything older than N hours or days.
>>>
>>> -- Mike
>>>
>>>

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to