2011-05-13 109 views
0

使用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> 
    &ltitem> 
    </item> 
[many items…] 
</catalog> 
+0

什麼是您的XPath看起來像那麼遠? – 2011-05-13 05:11:45

+0

現在我跳過搜索位,只是試圖獲得回報權。所以我有一小部分目錄 - 只有三個項目。我想要以下回報: – Gmoney 2011-05-13 13:47:03

+0

我想在csv中返回以下內容:(part-number1,name1,part-number2,name2,part-number3,name3)。我知道這看起來很複雜,所以請記住我是一個新手...讓$ sep:=',' 讓$ pn:=/catalog/item/description/partref/part-id/part-number 在/ catalog/item/vendors/vendor1 /目錄中爲$ name指定$ name:=/catalog/item/vendors/vendor1/name $ pn in/catalog/item/description/partref/part-id/part- number 名稱 返回字符串連接(($ pn,$ name),$ sep) 我已經嘗試了for循環的每個組合;這只是最新的嘗試。 – Gmoney 2011-05-13 13:58:55

回答

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

完美!謝謝!我怎樣才能讓$ sep不僅出現在元素之間,而且還在返回之間呢?因此,代替x1,y1,z1x2,y2,z2,我將得到x1,y1,z1,x2,y2,z2? – Gmoney 2011-05-13 15:50:59

+0

我明白了。 concat($ sep,string-join((blah,blah),$ sep))。 – Gmoney 2011-05-13 16:35:41