我有一个XML元素,例如:
<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>
我需要做的是迭代这个元素并仅使用不同的size元素拉出第一个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的第二个item元素。有没有办法在for循环过滤器语句中过滤掉这些?
答案 0 :(得分:3)
一种方法是:
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]
而另一种(更邪恶的)方式是
$items[index-of($items/size, size)[1]]
答案 1 :(得分:-1)
以下查询是否有帮助?
for $item in $items
let $size := number($item/size/text())
return
if($size != 360) then
$item
else ()