如何根据Marklogic Server中的命名空间进行搜索?

时间:2012-06-17 14:24:46

标签: xml xquery marklogic

假设我有一些带有一个命名空间的xml文档(http://www.marklogic.com)和另一组带有另一个命名空间的xml文档(http://www.mynamespce.com)。现在我想只搜索那些具有http://www.marklogic.com命名空间的xml文档。我怎么能这样做?

1 个答案:

答案 0 :(得分: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)

也可能有其他选择。例如,您可以设置多个字段并使用字段查询进行搜索。