What are in memory elements in marklogic?

前端 未结 3 1464
谎友^
谎友^ 2021-01-18 10:18

I have couple of documents on which xdmp:node-replace() over certain elements doesnot work. There are some other set of documents which are almost similar to th

相关标签:
3条回答
  • 2021-01-18 11:04

    If you want to update in-memory nodes as if they were in the database by using similar function calls, there's a utility library that does that:

    https://github.com/marklogic/commons/tree/master/memupdate

    The main library also ships with MarkLogic Server under App Services:

    appservices/utils/in-mem-update.xqy

    0 讨论(0)
  • 2021-01-18 11:05

    Anything constructed within a query is an in-memory element. For example this XQuery yields an in-memory element:

    <test/>
    

    Some function calls also return in-memory elements: xdmp:unquote is an obvious example. Any node that doesn't come from the current database will be treated as an in-memory node.

    This query yields a database element (if it exists), which could be modified using xdmp:node-replace:

    doc('fubar')/test
    

    This is a typical in-memory update error:

    xdmp:node-replace(<x/>, <y/>)
    

    With MarkLogic 6.0-1.1, the error code is XDMP-UPCONSTNODES.

    0 讨论(0)
  • 2021-01-18 11:08

    If your working with in memory elements import the following module

    import module namespace mem = "http://xqdev.com/in-mem-update" at "/MarkLogic/appservices/utils/in-mem-update.xqy";

    Instead of using xdmp:node-replace you can use mem:node-replace(<x/>, <y/>)

    0 讨论(0)
提交回复
热议问题