MarkLogic:从局部变量中搜索父节点中的子节点

时间:2015-03-31 00:55:31

标签: xml xquery marklogic

我将文档节点存储在局部变量中,并希望从局部变量中搜索子节点。考虑父母是:

let $parent :=<tempdoc>
                <identifier>
                  <a>1</a>
                  <b>2</b>
                </identifier>
              </tempdoc>

我不想插入父节点,因为它是在代码中间创建的临时节点。如果我将父项作为文档插入,我会执行以下操作,即从已插入的文档中搜索节点。

let $doc := cts:search(//*:identifier,
cts:directory-query(("/tempfiles/parentdocs/"),"1"))

其中/tempfiles/parentdocs/是保存文档的目录。

但是如果文档存储在本地变量而不是数据库中呢?应该替换cts:directory-query,以便我可以在局部变量本身中搜索元素。

1 个答案:

答案 0 :(得分:2)

你想用变量做什么?

因为cts:search用于从数据库中返回文档 您现在已经拥有了“文档”,只需要文档中的某些节点,这样您就可以使用xpath来获取您希望它为局部变量的值。

let $parent :=<tempdoc>
           <identifier>
           <a>1</a>
           <b>2</b>
           </identifier>
           </tempdoc>
return $parent/identifier/element()