MarkLogic node.js客户端API – 按元素值查询XML名称空间

假设我有一个logging结构如下的集合:

<m:m xmlns:m="http://www.m.com/"> <m:data> <z:term xmlns:z="http://z.come/schema/index.html#"> <z:name>abcd</z:name> <z:id>123456789</z:id> ...... 

然后我想selectz:id = whatever或z:name = whatever的logging。 我怎样才能用queryBuilder做到这一点?

没有命名空间时,我已经能够成功地进行这样的查询。 对于命名空间,它似乎不能以相同的方式工作。

您需要使用QueryBuilder.element()指定目标元素。 element()的文档说有三种方法来指定元素的QName:

没有命名空间的名字可以表示为一个string。 命名空间名称可以表示为具有uri和namestring的两项数组,或者作为由queryBuilder#qname函数返回的对象。

 var ml = require('marklogic'); var conn = require('./config.js').connection; var db = ml.createDatabaseClient(conn); var qb = ml.queryBuilder; db.documents.query( qb.where( qb.value(qb.element(['http://z.come/schema/index.html#', 'id']), '123456789') ) ).result() .then(function(docs) { console.log('This search found: ' + JSON.stringify(docs[0])); }) .catch(function(error) { console.log('something went wrong: ' + error); });