Loading TOC...

MarkLogic 9 Product Documentation
cts.elementQuery

cts.elementQuery(
   element-name as xs.QName[],
   query as cts.query
) as cts.elementQuery

Summary

Constructs a query that matches elements by name with the content constrained by the query given in the second parameter. Searches for matches in the specified element and all of its descendants. If the query specified in the second parameter includes any element attribute sub-queries, it will search attributes on the specified element and attributes on any descendant elements. See the second example below).

Parameters
element-name One or more element QNames to match. When multiple QNames are specified, the query matches if any QName matches.
query A query for the element to match. If a string is entered, the string is treated as a cts:word-query of the specified string.

Usage Notes

Enabling both the word position and element position indexes ("word position" and "element word position" in the database configuration screen of the Admin Interface) will speed up query performance for many queries that use cts.elementQuery. The position indexes enable MarkLogic Server to eliminate many false-positive results, which can reduce disk I/O and processing, thereby speeding the performance of many queries. The amount of benefit will vary depending on your data.

You can query for the existence of an element by specifying an empty cts.andQuery as the second parameter. For example, the following will match any instance of the specified element:

  cts.elementQuery(xs.QName("my-element"),
    cts.andQuery( [] ))
  

Example

cts.search(cts.elementQuery( xs.QName('function'), 'MarkLogic Corporation'));

// Returns relevance-ordered sequence of 'module' elements
//  ancestors (or self) of elements with QName 'function'
//  and text content containing the phrase 'MarkLogic Corporation'.

Example


const x = xdmp.unquote('<a attr="something">hello</a>');
cts.contains(x, cts.elementQuery(xs.QName('a'),
   cts.andQuery((
     cts.elementAttributeWordQuery(xs.QName('a'),
         xs.QName('attr'), 'something'),
     cts.wordQuery('hello')))));
// returns true

Stack Overflow iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.