2011-09-06 27 views
1

我得到了下面的示例XML:xQuery和撒克遜。對於參數的每個值一個新的標籤

<meci> 
    <nodes> 
    <node id="x"> 
     <mlfbs> 
     <region value="H"> 
      <mlfblist> 
      <mlfb partno="1" masternode="false" /> 
      <mlfb partno="2" masternode="false" /> 
      </mlfblist> 
     </region> 
     </mlfbs> 
    </node> 
    </nodes> 
</meci 

我寫了下面的XQuery:

xquery version "1.0"; 
<ProductList> 
{  
    for $a in /meci/nodes/node 
    return 
    <Product> 
    <id>{data($a/@id)}</id> 
    <mflb>{data($a/mlfbs/region/mlfblist/mlfb/@partno)}</mflb> 
    </Product> 
} 
</ProductList> 

結果看起來像

<ProductList> 
    <Product> 
    <id>x</id> 
    <mflb>1 2</mflb> 
    </Product> 
</ProductList> 

但是我想得到以下結果:

<ProductList> 
    <Product> 
    <id>x</id> 
    <mflb>1</mflb> 
    <mflb>2</mflb> 
    </Product> 
</ProductList> 

任何人都可以請告訴我做錯了什麼?任何幫助將不勝感激,我一直在搜索小時,沒有解決方案:/。

乾杯 斯特凡

回答

1

使用一個更for獲得mflb列表:

<ProductList> 
{  
    for $a in /meci/nodes/node 
    return 
    <Product> 
    <id>{data($a/@id)}</id> 
    {for $mlfb in data($a/mlfbs/region/mlfblist/mlfb/@partno) 
    return <mflb>{$mlfb}</mflb>} 
    </Product> 
} 
</ProductList>