2017-01-19 5 views
0

Хорошо, так у меня есть этот 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> 

Я пытаюсь принести минимальный выпуск год с жанром преступности. Это мой запрос , но по какой-то причине его возвращения все релиз лет, как это:

Я кладя последовательность как этот внутри Fn: мин

<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: мин сгладил бы мою последовательность, что я делаю неправильно, может кто-нибудь объяснить, как эта функция работает?

запрос:

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 

Спасибо заранее !!

ответ

0

Для всех, у кого есть аналогичная ошибка: Итак, fn: min делает то, что у меня было, проблема в том, что я применял 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 

Просто замените это слово «for» на «let», и ошибка будет очищена.

Смежные вопросы