2014-12-09 144 views
1

我有以下結構的XML文件 -XQuery更新 - 新的節點添加到組節點

<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> 

節點AB需要像

<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

你到目前爲止嘗試過什麼?另外,「同時」是什麼意思?在我看來,你想要將所有''元素與以下''一起組合在一起,直到出現下一個''元素。這是正確的解釋嗎? – dirkk 2014-12-09 12:12:38

+0

@dirkk - 是的正確解釋 – John 2014-12-09 12:13:35

回答

2

處理這種結構的最佳方法ctures帶有'翻轉窗口子句'。這將很好地組織您想要的組中的數據。我會留給你找出所需的確切的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> 
+0

謝謝。它是我正在尋找的。再次感謝。 – John 2014-12-10 04:14:57