2017-01-19 2 views
0

Ordnung arbeiten, so habe ich diese xml:fn: min Funktion nicht

<?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> 

Ich versuche, das minimale Release-Jahr mit Crime-Genre zu holen. Das ist meine Abfrage aber aus irgendeinem Grund all seiner Rückkehr die Release Jahre wie folgt aus:

Ich bin eine Sequenz wie diese innerhalb fn Puting: 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> 

Mir wurde der Eindruck vermittelt, dass fn: min meine Sequenz abflachen würde, was mache ich falsch, kann jemand erklären, wie diese Funktion funktioniert?

query:

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 

Vielen Dank im Voraus !!

Antwort

0

Für jeden, der einen ähnlichen Fehler hat: Okay so fn: min tut was ich es gelernt hätte, das Problem war, dass ich Fn: Min auf jedes Element wegen der Anweisung anwendete. Das war nicht was ich wollte, ich wollte eine Sequenz von Release-Jahren gruppieren, also war es ziemlich einfach was ich tun musste!

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 

Ersetzen Sie einfach das "für" für ein "lassen" und der Fehler wird gelöscht.

Verwandte Themen