xQuery 和 Saxon。对于参数的每个值一个新标签

发布于 2024-12-03 14:19:48 字数 1183 浏览 0 评论 0原文

我得到了以下示例 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>

谁能告诉我我做错了什么?任何帮助将不胜感激,我已经搜索了几个小时但没有解决方案:/。

干杯 斯特凡

I got the following sample 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

And I have written the following 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>

The result looks like

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

But I'd like to get the following result:

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

Could anyone please tell what I am doing wrong? Any help would be much appreciated, I have been search hours with no solution :/.

Cheers
stefan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长亭外,古道边 2024-12-10 14:19:48

再使用一个 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>

Use one more for to get mflb list:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文