【发布时间】:2014-06-24 10:23:24
【问题描述】:
我正在尝试通过更改属性对元素进行分组,这可以通过 XQuery 3.0 Tumbling Windows 轻松完成,但我仅限于 XQuery 1.0。
输入如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<value attr="a" no="1"/>
<value attr="a" no="2"/>
<value attr="b"/>
<value attr="a" no="3"/>
<value attr="b"/>
<value attr="b"/>
<value attr="a" no="4"/>
<value attr="a" no="5"/>
<value attr="b"/>
<value attr="a" no="6"/>
</root>
所需的输出如下:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<new>
<value attr="a" no="1"/>
<value attr="a" no="2"/>
</new>
<new>
<value attr="a" no="3"/>
</new>
<new>
<value attr="a" no="4"/>
<value attr="a" no="5"/>
</new>
<new>
<value attr="a" no="6"/>
</new>
</root>
我的第一次尝试如下,由于嵌套 for 循环在 XQuery 1.0 中的工作方式,它没有返回预期结果
<root>{
for $changeNode in doc("Untitled4.xml")//root/value
where $changeNode[@attr="a" and preceding::value[@attr!="a"]]
return
<new>{
for $sameNode in $changeNode/following::value
where $sameNode[@attr="a"]
return $sameNode
}</new>
}</root>
结果:
<root>
<new>
<value attr="a" no="4"/>
<value attr="a" no="5"/>
<value attr="a" no="6"/>
</new>
<new>
<value attr="a" no="5"/>
<value attr="a" no="6"/>
</new>
<new>
<value attr="a" no="6"/>
</new>
<new/>
</root>
【问题讨论】:
-
为什么要删除第一个问题?这是一个非常烦人的行为,在 SO 上不受欢迎,因为答案也在这里帮助他人!您为什么不简单地修改您仅限于 1.0,我会相应地编辑我的答案(就像其他人一样)?简单地删除您的问题并再次询问某个问题不是很有建设性。
-
另外,正如您在旧(现已删除)的问题中声称您找到了解决方案,我想知道您为什么还要问?!
-
我没有解决办法。我忘了限制“XQuery 1.0”。
-
这就是为什么我说您可以简单地编辑您的原始问题。这样一来,我的答案就被简单地删除了,坦率地说,这很烦人,因为您当然可以理解,我实际写答案需要时间,而且它本可以帮助其他人。为 XQuery 1.0 提供答案也不是问题,但由于您只是用他们的答案删除问题,我不愿意投入更多时间。
-
简而言之:由于您是 SO 新手,请在帮助部分熟悉 SO 的工作原理。这对于实际获得答案至关重要。
标签: xquery