MarkLogic 6.0:查询从子元素获取文本

时间:2016-04-20 13:44:10

标签: spring-mvc xquery marklogic

我需要在<title>中提取文字。我试过的XQuery如下。

XML

<jrnl:prelim>
  <heading searchtype="TITLE">
     <title>Les apports de la loi au secteur des transports (articles 1 à 30)</title>
     <subtitle>. - L. n° 2015-990, 6 août 2015, Titre Ier : Libérer l'activité - Chapitre Ier : Mobilité : JO 7 août 2015, p. 13537</subtitle>
  </heading>

的XQuery

 declare namespace jrnl = "http://www.lexis-nexis.com/glp/jrnl";
let $x := doc("/FR/PRESSE_ACTUALITE/PRESSE/PS_KPRE-437971_MAR04.xml")
let $qy := cts:element-query(xs:QName("jrnl:prelim"),cts:and-query(( 
   cts:element-attribute-word-query(
                          xs:QName("heading"),
                          xs:QName("searchtype"), 
                          "TITLE"
                        ), cts:element-word-query(xs:QName("title"), "Action des douanes dans la lutte contre la ") )))
return cts:contains($x, $qy)

1 个答案:

答案 0 :(得分:2)

如果您已经检索过该文档,则可以使用XPath:

$x/jrnl:prelim/heading[@searchtype eq "TITLE"]/title[contains(string(.), "...")]

更常见的是将cts:query传递给cts:search()以检索文档而不是使用cts:query来检索文档后检查文档。

顺便说一句,MarkLogic 6.0已经很老了,并且缺少MarkLogic 8中的许多重要功能(例如,本机JSON支持)。你应该尽可能升级。

希望有帮助,