xQuery和Saxon。对于参数的每个值,新标记

时间:2011-09-06 02:35:26

标签: xquery saxon

我得到了以下示例xml:

<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 个答案:

答案 0 :(得分: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>