Search code examples
marklogic

How to get a localname and scalar-type of admin:database-get-range-element-indexes in Marklogic


I use admin:database-get-range-element-indexes to get a list of indexes in database. But I want return a list of [localname] and [scalar-type] I am learning Marklogic. Thanks in advance.

xquery version "1.0-ml";
import module namespace admin = "http://marklogic.com/xdmp/admin"
      at "/MarkLogic/admin.xqy";

let $config := admin:get-configuration()
let $element_range_indexes := admin:database-get-range-element-indexes   ($config, xdmp:database("MORDB") )

return $element_range_indexes/localname (:<--THIS RETURN NOTHING:)

I want to return only localname & scalar-type in elements.

 <range-element-index xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://marklogic.com/xdmp/database">

 <scalar- type>int</scalar-type>
 <namespace-uri>http://udma.com/mrd/record</namespace-uri>
 <localname>FullTextExists</localname>
 <collation></collation>
 <range-value-positions>false</range-value-positions>
 <invalid-values>ignore</invalid-values>

</range-element-index>

Solution

  • The problem with your code is that you XPath has no namespace. "localname" is in the "http://marklogic.com/xdmp/database" namespace. So declare a prefix for it, and use that in your path:

    declare namespace db="http://marklogic.com/xdmp/database";
    import module namespace admin = "http://marklogic.com/xdmp/admin"
          at "/MarkLogic/admin.xqy";
    
    let $config := admin:get-configuration()
    let $element_range_indexes := admin:database-get-range-element-indexes($config, xdmp:database("MORDB") )
    
    return $element_range_indexes/(db:localname|db:scalar-type)