Marklogic 仅通过传递部分节点名获取子节点的XPath

Marklogic 仅通过传递部分节点名获取子节点的XPath,marklogic,marklogic-8,Marklogic,Marklogic 8,我将以下XML存储在MarkLogic中 <testDoc> <test> <test1>test1</test1> <test2>test2</test2> <test3>test3</test3> </test> </testDoc> 但是我的xquery返回 /testDoc /testDoc/test /

我将以下XML存储在MarkLogic中

<testDoc>
    <test>
        <test1>test1</test1>
        <test2>test2</test2>
        <test3>test3</test3>
    </test>
</testDoc>
但是我的xquery返回

/testDoc
/testDoc/test
/testDoc/test/test1
/testDoc/test/test2
/testDoc/test/test3
我在qconsole上执行的XQuery是

 xquery version "1.0-ml";
 let $xml := document { fn:doc("/test/testDoc")}
 let $elem-name := "test"
 let $elems := $xml//*[local-name()[contains(lower-case(.), lower-case($elem-name))]]
 return $elems ! xdmp:path(.)

请指导我实现我的要求。

我不确定您是要在某个深度匹配,还是只匹配叶节点。如果只想获取叶节点,可以添加谓词以检查是否没有子元素

[fn:not(./*)]
您还可以重写谓词并使用
fn:matches()
进行匹配

let $elems := $xml//*[fn:not(./*)][fn:matches(fn:local-name(.), $elem-name, "i")]

@你能把这个问题标记为已回答吗?这让人们知道你并不是在寻求帮助(这给了詹姆斯一些荣誉)。@Dave Cassel。。。对我已经将这个问题标记为已回答。谢谢你@James Kerr。。您的解决方案正按照我的期望工作。
let $elems := $xml//*[fn:not(./*)][fn:matches(fn:local-name(.), $elem-name, "i")]