Xquery 返回多个数据元素

Xquery 返回多个数据元素,xquery,Xquery,使用Xquery,我如何在下面的文件(由许多项组成)中搜索零件号中带有“XC”的所有项(有许多项),然后在匹配项中返回所有3个感兴趣的数据元素(零件号、零件名和名称)?返回是主要问题——我的尝试会导致有趣数据元素的每一种排列。谢谢大家! <catalog> <item> <description> <partref> <part-id> <part-number>

使用Xquery,我如何在下面的文件(由许多项组成)中搜索零件号中带有“XC”的所有项(有许多项),然后在匹配项中返回所有3个感兴趣的数据元素(零件号、零件名和名称)?返回是主要问题——我的尝试会导致有趣数据元素的每一种排列。谢谢大家!

    
<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)