XQuery 更新 - 将新节点添加到组节点



我有一个结构如下的XML文件 -

<Root>
   <Doc>
    <Ref>
      <A></A>
      <B></B>
      <A></A>
      <B></B>
      <B></B>
      <B></B>
    </Ref>
   </Doc>  
   <Doc>
    <Ref>
      <A></A>
      <B></B>
      <B></B>
      <B></B>
    </Ref>
   </Doc>  
   <Doc>
    <Ref>
      <A></A>
      <B></B>
      <B></B>
      <A></A>
      <B></B>
      <B></B>
    </Ref>
   </Doc>  
</Root>

节点A和所有同时B节点需要分组,如下所示

<Root>
   <Doc>
    <Ref>
      <data>
        <A></A>
        <B></B>
      </data>
      <data>          
        <A></A>
        <B></B>
        <B></B>
        <B></B>
      </data>
    </Ref>
   </Doc>  
   <Doc>
    <Ref>
      <data>
       <A></A>
       <B></B>
       <B></B>
       <B></B>
      </data>     
    </Ref>
   </Doc>  
   <Doc>
    <Ref>
      <data>
       <A></A>
       <B></B>
       <B></B>
      </data>
      <data>   
       <A></A>
       <B></B>
       <B></B>
      </data>    
    </Ref>
   </Doc>  
</Root>

节点数B,节点A之后可以是任何内容,例如 2、3 ...或 10..

处理此类结构的最佳方法是使用"翻转窗口子句"。这将很好地组织所需组中的数据。我将留给您找出所需的确切 xquery-update 语法。

for $ref in //Ref
return <Ref>{
  for tumbling window $w in $ref/element()
    start $s when $s/self::A
  return <data>{$w}</data>
  }</Ref>

相关内容

  • 没有找到相关文章

最新更新