Xml 排除XQuery中的元素
我有一个XML元素,例如:Xml 排除XQuery中的元素,xml,filter,for-loop,xquery,Xml,Filter,For Loop,Xquery,我有一个XML元素,例如: <items> <item> <size>360</size> <quantity>400</quantity> <item> <item> <size>540</size> <quantity>1200</quantity> <item>
<items>
<item>
<size>360</size>
<quantity>400</quantity>
<item>
<item>
<size>540</size>
<quantity>1200</quantity>
<item>
<item>
<size>360</size>
<quantity>600</quantity>
<item>
<item>
<size>800</size>
<quantity>750</quantity>
<item>
</items>
360
400
540
1200
360
600
800
750
我需要做的是迭代这个元素,并只提取具有不同大小元素的第一个item元素。所以我想要:
<item>
<size>360</size>
<quantity>400</quantity>
<item>
<item>
<size>540</size>
<quantity>1200</quantity>
<item>
<item>
<size>800</size>
<quantity>750</quantity>
<item>
360
400
540
1200
800
750
删除第二个大小为360的项目元素。有没有办法在for循环filter语句中过滤掉这些内容?下面的查询有帮助吗
for $item in $items
let $size := number($item/size/text())
return
if($size != 360) then
$item
else ()
一种方法是:
for $item in $items
where $item is $items[size = $item/size][1]
return $item
另一个是
let $sizes = distinct-values($items/size)
for $size in $sizes
return $items[size = $size][1]
还有一种(更邪恶的)方式是
我相信这将排除所有大小为360的元素,而不仅仅是第2-N个元素。加上该值有时可能是360以外的值,目前尚不清楚。
$items[index-of($items/size, size)[1]]