1

次の構造の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>

Bnodeの後の nodeの数はA、2、3 ...、または 10.. など、任意の数にすることができます。

4

1 に答える 1

2

このような構造を処理する最良の方法は、「タンブリング ウィンドウ句」を使用することです。これにより、必要なグループにデータがうまく整理されます。必要な 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>
于 2014-12-09T15:34:56.307 に答える