Xquery将文件名添加为元素
第一个XML文件1.XMLXquery将文件名添加为元素,xquery,marklogic,Xquery,Marklogic,第一个XML文件1.XML <root> <name>aa</name> <phno>bb</phno> <email>cc</email> </root> <root> <name>aa</name> <phno>dd</phno> <email>ee</email>
<root>
<name>aa</name>
<phno>bb</phno>
<email>cc</email>
</root>
<root>
<name>aa</name>
<phno>dd</phno>
<email>ee</email>
</root>
我尝试使用XQuery的基本知识,如:
let $searchResult := search:search("aa")
let $uri := $searchResult/search:result/@uri
let $docs :=
for $each in $uri
return (fn:doc($each)/root, <uri>{$each}</uri>)
return $docs
let$searchResult:=搜索:搜索(“aa”)
让$uri:=$searchResult/search:result/@uri
让$docs:=
对于$uri中的每个$
返回(fn:doc($each)/根,{$each})
返回$docs
这给了我两份不同的文件,这不是我想要的
我怎样才能解决这个问题
提前感谢您可以尝试使用其他子元素重构
元素,如下所示:
....
let $docs :=
for $each in $uri
return <root>{fn:doc($each)/root/*, <uri>{$each}</uri>}</root>
return $docs
。。。。
让$docs:=
对于$uri中的每个$
返回{fn:doc($each)/root/*,{$each}
返回$docs
您可以尝试用附加子元素重构
元素,如下所示:
....
let $docs :=
for $each in $uri
return <root>{fn:doc($each)/root/*, <uri>{$each}</uri>}</root>
return $docs
。。。。
让$docs:=
对于$uri中的每个$
返回{fn:doc($each)/root/*,{$each}
返回$docs
您可以尝试用附加子元素重构
元素,如下所示:
....
let $docs :=
for $each in $uri
return <root>{fn:doc($each)/root/*, <uri>{$each}</uri>}</root>
return $docs
。。。。
让$docs:=
对于$uri中的每个$
返回{fn:doc($each)/root/*,{$each}
返回$docs
您可以尝试用附加子元素重构
元素,如下所示:
....
let $docs :=
for $each in $uri
return <root>{fn:doc($each)/root/*, <uri>{$each}</uri>}</root>
return $docs
。。。。
让$docs:=
对于$uri中的每个$
返回{fn:doc($each)/root/*,{$each}
返回$docs
您的解决方案返回多个文档,因为您返回的是多个文档的序列(实际上,由于有2个文档和2个未附加的URI元素,您的序列现在的长度为“4”)
你可以做一些简单的事情,比如:
let $searchResult := search:search("aa")
let $uris := $searchResult/search:result/@uri
let $docs := element documents {
attribute count {fn:count($uris)},
for $uri in $uris
return <document uri='{$uri}'>{fn:doc($uri)/node()}</uri>)
}
return $docs
let$searchResult:=搜索:搜索(“aa”)
让$uris:=$searchResult/search:result/@uri
让$docs:=元素文档{
属性计数{fn:count($uri)},
对于$uri中的$uri
返回{fn:doc($uri)/node()})
}
返回$docs
这会回来的
<documents count="2">
<document uri="1.xml">
<root>
<name>aa</name>
<phno>bb</phno>
<email>cc</email>
</root>
</document>
<document uri="2.xml">
<root>
<name>aa</name>
<phno>dd</phno>
<email>ee</email>
</root>
</document>
</documents>
aa
bb
复写的副本
aa
dd
ee
您的解决方案返回多个文档,因为您返回的是多个文档的序列(实际上,由于有2个文档和2个未附加的URI元素,您的序列现在的长度为“4”)
你可以做一些简单的事情,比如:
let $searchResult := search:search("aa")
let $uris := $searchResult/search:result/@uri
let $docs := element documents {
attribute count {fn:count($uris)},
for $uri in $uris
return <document uri='{$uri}'>{fn:doc($uri)/node()}</uri>)
}
return $docs
let$searchResult:=搜索:搜索(“aa”)
让$uris:=$searchResult/search:result/@uri
让$docs:=元素文档{
属性计数{fn:count($uri)},
对于$uri中的$uri
返回{fn:doc($uri)/node()})
}
返回$docs
这会回来的
<documents count="2">
<document uri="1.xml">
<root>
<name>aa</name>
<phno>bb</phno>
<email>cc</email>
</root>
</document>
<document uri="2.xml">
<root>
<name>aa</name>
<phno>dd</phno>
<email>ee</email>
</root>
</document>
</documents>
aa
bb
复写的副本
aa
dd
ee
您的解决方案返回多个文档,因为您返回的是多个文档的序列(实际上,由于有2个文档和2个未附加的URI元素,您的序列现在的长度为“4”)
你可以做一些简单的事情,比如:
let $searchResult := search:search("aa")
let $uris := $searchResult/search:result/@uri
let $docs := element documents {
attribute count {fn:count($uris)},
for $uri in $uris
return <document uri='{$uri}'>{fn:doc($uri)/node()}</uri>)
}
return $docs
let$searchResult:=搜索:搜索(“aa”)
让$uris:=$searchResult/search:result/@uri
让$docs:=元素文档{
属性计数{fn:count($uri)},
对于$uri中的$uri
返回{fn:doc($uri)/node()})
}
返回$docs
这会回来的
<documents count="2">
<document uri="1.xml">
<root>
<name>aa</name>
<phno>bb</phno>
<email>cc</email>
</root>
</document>
<document uri="2.xml">
<root>
<name>aa</name>
<phno>dd</phno>
<email>ee</email>
</root>
</document>
</documents>
aa
bb
复写的副本
aa
dd
ee
您的解决方案返回多个文档,因为您返回的是多个文档的序列(实际上,由于有2个文档和2个未附加的URI元素,您的序列现在的长度为“4”)
你可以做一些简单的事情,比如:
let $searchResult := search:search("aa")
let $uris := $searchResult/search:result/@uri
let $docs := element documents {
attribute count {fn:count($uris)},
for $uri in $uris
return <document uri='{$uri}'>{fn:doc($uri)/node()}</uri>)
}
return $docs
let$searchResult:=搜索:搜索(“aa”)
让$uris:=$searchResult/search:result/@uri
让$docs:=元素文档{
属性计数{fn:count($uri)},
对于$uri中的$uri
返回{fn:doc($uri)/node()})
}
返回$docs
这会回来的
<documents count="2">
<document uri="1.xml">
<root>
<name>aa</name>
<phno>bb</phno>
<email>cc</email>
</root>
</document>
<document uri="2.xml">
<root>
<name>aa</name>
<phno>dd</phno>
<email>ee</email>
</root>
</document>
</documents>
aa
bb
复写的副本
aa
dd
ee