2012-11-27 9 views
6

मेरे पास कुछ दस्तावेज़ हैं जिन पर कुछ तत्वों पर xdmp:node-replace() काम नहीं करते हैं। दस्तावेजों के कुछ अन्य सेट हैं जो लगभग समस्या के समान हैं लेकिन xdmp:node-replace उन पर पूरी तरह से ठीक काम करता है। उन सभी संभावनाओं का प्रयास किया जो गलत हो सकते थे लेकिन व्यर्थ में। कुछ पढ़ें जहां xdmp:node-replace फ़ंक्शन स्मृति तत्वों 'में पर काम नहीं करता है।मार्कलॉग में मेमोरी तत्वों में क्या हैं?

तो यह सत्यापित करने के लिए कि क्या स्मृति स्मृति तत्व 'में है, मैं जानना चाहता हूं कि यह वास्तव में क्या है।

उस पर किसी भी प्रकाश बहुत मदद की होगी

उत्तर

6

कुछ भी एक प्रश्न के भीतर निर्माण एक में स्मृति तत्व है। उदाहरण के लिए इस XQuery एक में स्मृति तत्व पैदावार:

<test/> 

कुछ समारोह में भी स्मृति तत्व वापसी कॉल: xdmp:unquote एक स्पष्ट उदाहरण है। कोई भी नोड जो वर्तमान डेटाबेस से नहीं आता है, को इन-मेमोरी नोड के रूप में माना जाएगा।

इस क्वेरी एक डेटाबेस तत्व पैदावार (यदि वह मौजूद) है, जो xdmp:node-replace का उपयोग कर संशोधित किया जा सकता है:

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

MarkLogic 6.0 के साथ:

doc('fubar')/test 

यह एक ठेठ में स्मृति अपडेट करने में त्रुटि है -1.1, त्रुटि कोड XDMP-UPCONSTNODES है।

MarkLogic साथ

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

मुख्य पुस्तकालय भी जहाजों:

6

आप में स्मृति नोड्स अद्यतन करने के लिए के रूप में यदि वे इसी तरह के समारोह कॉल का उपयोग करके डेटाबेस में थे चाहते हैं, तो करता है कि एक उपयोगिता पुस्तकालय है एप्लिकेशन सेवाओं के अंतर्गत सर्वर:

appservices/utils/इन-मेम-update.xqy

+0

कि पुस्तकालय का एक थोड़ा और अधिक अनुकूलित संस्करण के लिए उपयोग कर सकते हैं, देखें: https://github.com/ryanjdew/XQuery-XML-Memory-Operations – grtjn

2

अपने in memory elements आयात निम्नलिखित मॉड्यूल के साथ काम कर रहे हैं

+०१२३५१६४१०६ xdmp:node-replace का उपयोग करने का

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

इसके बजाय आप mem:node-replace(<x/>, <y/>)

संबंधित मुद्दे