2012-06-17 1 views
0

Предположим, у меня есть несколько документов xml с одним пространством имен (http://www.marklogic.com) и другим набором документов xml с другим пространством имен (http://www.mynamespce.com). Теперь я хочу искать только те документы xml, которые имеют пространство имен http://www.marklogic.com. Как я могу это сделать ?Как искать в соответствии с пространствами имен в Marklogic Server?

+0

cts: search (//, cts: element-value-query (fn: QName ("http://www.marklogic.com", "фраза запроса"))) –

ответ

2

Вы не говорите, как вы ищите, но если вы вызываете search:search, вы можете установить опцию searchable-expression корневому элементу документов, включая пространство имен.

declare variable $query as xs:string external ; 
search:search(
    $query, 
    <options xmlns="http://marklogic.com/appservices/search"> 
    <searchable-expression 
    xmlns:ns1="http://test/namespace/1">/ns1:doc</searchable-expression> 
    </options>) 

http://docs.marklogic.com/5.0doc/docapp.xqy#display.xqy?fname=http://pubs/5.0doc/xml/search-dev-guide/search-api.xml%2343671 имеет больше на этот вариант.

Или вы можете позвонить по телефону cts:search. Выбираемое выражение является первым аргументом.

declare namespace ns1="http://test/namespace/1" ; 
declare variable $query as cts:query external ; 
cts:search(/ns1:doc, $query) 

Могут быть и другие варианты. Например, вы можете настроить несколько полей и выполнить поиск с помощью полевых запросов.

Смежные вопросы