Xquery 返回多个数据元素
使用Xquery,我如何在下面的文件(由许多项组成)中搜索零件号中带有“XC”的所有项(有许多项),然后在匹配项中返回所有3个感兴趣的数据元素(零件号、零件名和名称)?返回是主要问题——我的尝试会导致有趣数据元素的每一种排列。谢谢大家!Xquery 返回多个数据元素,xquery,Xquery,使用Xquery,我如何在下面的文件(由许多项组成)中搜索零件号中带有“XC”的所有项(有许多项),然后在匹配项中返回所有3个感兴趣的数据元素(零件号、零件名和名称)?返回是主要问题——我的尝试会导致有趣数据元素的每一种排列。谢谢大家! <catalog> <item> <description> <partref> <part-id> <part-number>
<catalog>
<item>
<description>
<partref>
<part-id>
<part-number>XC51222</part-number>
</part-id>
</partref>
<part-name>DSP, Network Vectoring<part-name>
<vendors>
<vendor1>
<pay-to>
<name>JCOF Industries</name>
</pay-to>
</vendor1>
</vendors>
</description>
</item>
<item>
</item>
[many items…]
</catalog>
XC51222
网络矢量化
工业联合会
</项目>
<item>
</项目>
[许多项目…]
到目前为止,您的XPath是什么样子的?现在我正在跳过搜索位,只是试图正确返回。所以我有目录的一小部分——只有三项。我想要以下的返回:我想要以下的csv返回:(零件号1,名称1,零件号2,名称2,零件号3,名称3)。我知道这看起来很复杂,所以请记住我是新手。。。let$sep:=','let$pn:=/catalog/item/description/partref/part id/part number for$pn in/catalog/item/description/partref/part id/part number let$name:=/catalog/item/vendor1/name for$name in/catalog/item/vendor1/name返回字符串联接($pn,$name),$sep)我尝试了for循环的每个组合;这只是最新的尝试。我得到的输出是pn和name的每一个组合--pn1,name1,pn1,name2,pn1,name3,pn2,name1,pn2,name2,等等完美!谢谢如何使$sep不仅出现在元素之间,而且出现在返回之间?所以我得到的不是x1,y1,z1x2,y2,z2,而是x1,y1,z1,x2,y2,z2?,我得到了。concat($sep,字符串连接($sep))。
xquery version "1.0";
let $sep := ','
for $x in catalog/item
where fn:matches($x/description/partref/part-id/part-number, 'XC')
return fn:string-join( ($x/description/partref/part-id/part-number/text(), $x/description/part-name/text(), $x/description/vendors/vendor1/pay-to/name/text()), $sep)