fn:min函数不起作用

时间:2017-01-19 13:21:59

标签: xquery flwor

好的,我有这个xml:

<?xml version="1.0" encoding="UTF-8" ?>
<dvdCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://teste1.org"
xsi:noNamespaceSchemaLocation="http://teste1.org dvds.xsd">
<dvd>
<id>1</id>
<title>Pulp Fiction</title>
<release-year>1994</release-year>
<director>Quentin Tarantino</director>
<actors>
< actor type="star" gender="male">John Travolta</actor>
<actor type="star" gender="female">Uma Thurman</actor>
<actor type="co-star" gender="male">Samuel L. Jackson</actor>
</actors>
<genres><genre>Crime</genre><genre>Drama</genre></genres>
</dvd>
<dvd>
<id>2</id>
<title>Green mile</title>
<release-year>1993</release-year>
<director>Quentin Tarantino</director>
<actors>
<actor type="star" gender="male">Tom hanks</actor>
</actors>
<genres><genre>Crime</genre></genres>
</dvd>
<dvd>
<id>3</id>
<title>Titanic</title>
<release-year>1999</release-year>
<director>Quentin Tarantino</director>
<actors>
<actor type="star" gender="male">Tom hanks</actor>
</actors>
<genres><genre>Crime</genre></genres>
</dvd>
</dvdCollection>

我试图获取犯罪类型的最低发行年份。这是我的查询 但出于某种原因,它会像这样回归所有发行年份:

1994 1993年 1999年

我在fn:min

中输入这样的序列
 <release-year xmlns="http://teste1.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">1994</release-year>
 <release-year xmlns="http://teste1.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">1993</release-year>
 <release-year xmlns="http://teste1.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">1999</release-year>

给我的印象是fn:min会压扁我的序列,我做错了什么,有人可以解释这个功能是如何工作的吗?

查询:

    declare default element namespace "http://teste1.org";
    let $dvds := fn:doc("dvdcollection.xml")//dvd
    for $dvd in $dvds//genre[.="Crime"]
    let $min := fn:min($dvd/../../release-year)
    return $min

提前致谢!!

1 个答案:

答案 0 :(得分:0)

对于每个有类似错误的人: 好的,所以fn:min做了我想做的事情,问题是我因为for指令而对每个元素应用fn:min。这不是我想要的,我想把一系列发布年份分组,所以我需要做的很简单!

declare default element namespace "http://teste1.org";
let $dvds := fn:doc("dvdcollection.xml")//dvd
**let** $dvd := $dvds//genre[.="Crime"]
let $min := fn:min($dvd/../../release-year)
return $min

只需替换&#34;对于&#34;对于&#34;让&#34;并且错误被清除了。