Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 如何在xquery中将元素节点转换为文档_Xml_Xpath_Xquery_Marklogic - Fatal编程技术网

Xml 如何在xquery中将元素节点转换为文档

Xml 如何在xquery中将元素节点转换为文档,xml,xpath,xquery,marklogic,Xml,Xpath,Xquery,Marklogic,我有一个xml let $a := <a> <b>asd</b> <c>bvn</c> </a> let$a:= 自闭症 bvn 如果我返回$a/a/b,它将不起作用,因为这是一个元素节点 所以我需要将元素节点转换为文档节点。为了让它工作 我无法更改xpath。使用相同的xpath'/a/b'是否仍然可以得到结果?如果需要,可以创建文档节点 let

我有一个xml

let $a := <a>
             <b>asd</b>
             <c>bvn</c>
          </a>
let$a:=
自闭症
bvn
如果我返回
$a/a/b
,它将不起作用,因为这是一个元素节点

所以我需要将元素节点转换为文档节点。为了让它工作


我无法更改
xpath
。使用相同的
xpath
'/a/b'是否仍然可以得到结果?

如果需要,可以创建文档节点

let $a := <a>
             <b>asd</b>
             <c>bvn</c>
          </a>
let $a := document{$a}
return $a/a/b
let$a:=
自闭症
bvn
设$a:=文档{$a}
返回$a/a/b
或者直接

let $a := document {
            <a>
                <b>asd</b>
                <c>bvn</c>
            </a>
            }

return $a/a/b
let$a:=文档{
自闭症
bvn
}
返回$a/a/b

我不认为将xml包装在
文档节点中是您正在寻找的解决方案。您希望在文档节点中使用它的具体原因是什么

您真正需要的只是多包装一层xml,然后xpath就可以正常工作了。您可以选择任何元素作为动态生成的xml的根,例如:

let $a := <wrapper>
        <a>
            <b>ABC</b>
            <c>XYZ</c>
        </a>
    </wrapper>
return $a/a/b

(: This will return the element <b>ABC</b> :)
let$a:=
基础知识
XYZ
返回$a/a/b
(:这将返回元素ABC:)
我建议不要将其包装在文档节点中,除非您有非常具体的原因。但根据上面列出的要求,您不需要。因此,我坚持将您的
$a xml
封装在xml节点的另一层中