我有一个具有以下结构的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 ..
答案 0 :(得分: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>