xQuery и саксонский. Для каждого значения параметра новый тег - PullRequest
1 голос
/ 06 сентября 2011

Я получил следующий образец 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 Ответ

1 голос
/ 06 сентября 2011

Используйте еще один 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>
...