2014-07-09 15 views

回答

0

你的問題的簡單答案是:如果你沒有配置一個元素範圍索引,那麼你沒有一個。您可以查看數據庫配置以查看是否創建了元素範圍索引或以您所關心的元素結尾的路徑索引。

我懷疑你可能會問一個不同的問題,但我不確定它是什麼。你爲什麼想知道?

2

我不確定我是否理解這個問題,但有幾種方法可以找出是否存在範圍索引。

例如,您可以嘗試使用https://docs.marklogic.com/cts:element-referencehttps://docs.marklogic.com/cts:path-reference構建範圍索引參考。如果範圍索引不存在,那麼引用構造函數將引發錯誤,並且您可以測試該錯誤。例如:

try { cts:element-reference(xs:QName('DNE')) } 
catch($ex) { 
    if (not($ex/error:code = 'XDMP-ELEMRIDXNOTFOUND')) then xdmp:rethrow() 
    else xdmp:log(text { 'No element range index on DNE!' }) } 

另一種方法是使用admin API:https://docs.marklogic.com/admin:database-get-range-element-indexes及其相關函數。您可能預期這會比嘗試捕捉元素引用更高效,但可能會更慢。但是,管理API允許相當容易地測試任意數據庫配置。

0

這聽起來像是一個「反向」XPath選擇,XPath模擬爲reverse query。給定一組匹配特定節點的路徑?對於元素範圍索引,與本地名稱,名稱空間和類型匹配非常簡單。匹配路徑或字段比較複雜。

一個想法:可以通過爲每個路徑設置一個動態的XSLT樣式表和一個xsl:template match="path"並轉換節點的父文檔來完成路徑匹配嗎?有更容易的方法嗎?

相關問題