xquery met distinct-value

Status
Niet open voor verdere reacties.

garfieke

Gebruiker
Lid geworden
25 apr 2007
Berichten
9
Hey,

Ik ben vrij nieuw in XML, maar probeer bij volgende xquery de genres weer te geven en daarbij zouden ook de acteurs moeten komen die in een film meespeelde van dat genre ...

Een distinct-values werkt blijkbaar niet dus heb iets geprobeerd met alles in een variabele te gooien en dan te kijken of wat ik er terug wil inzetten er eventueel al in staat.

Dus de bedoeling is een bioscoop bestaat uit meerdere cinema's en in elke cinema zijn er zalen met voorstellingen ... elke voorstelling heeft een film, maar een zaal heeft wel meerdere voorstellingen.

Zou iemand mij aub willen verderhelpen?

Dit is wat ik heb, maar dus niet werkt (geeft fout bij contains):
Code:
declare variable $genre := "";
for $cinemacom in doc("UIT.xml")//bioscoop//cinemacom
return
	for $zaal in $cinemacom//zaal
		return
			for $voorstelling in $zaal//voorstelling
				if (contains($genre,$voorstelling/film/genre/text()))
				then
					return ""
				else
					$genre = concat($genre,$voorstelling/film/genre/text())
					return $voorstelling/film/genre/text()

UIT.xml:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<bioscoop xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\ProjectDB\UIT2.xsd">
	<cinemacom id="1">
		<naam>'t cinemake</naam>
		<adres>Lalalaan 69</adres>
		<postcode>1000</postcode>
		<gemeente>Brussel</gemeente>
		<aantal_verkooppunten>12</aantal_verkooppunten>
		<tel_nr>02 222 22 22</tel_nr>
		<zaal id="1">
			<naam>Dramaroom</naam>
			<voorstelling id="1">
				<datum>2007-10-29</datum>
				<tijd>14:15:00.0Z</tijd>
				<film id="1">
					<naam>Ben X</naam>
					<speelduur>93</speelduur>
					<aantal_kopijen>2</aantal_kopijen>
					<genre>Drama</genre>
					<korte_inhoud>Ben is anders. Hij is licht autistisch. Zijn leven zit vol vreemde rituelen. Hij lijkt te leven in zijn eigen universum, dat zich voor meer dan de helft afspeelt in de wereld van online computergames. In de echte, harde wereld van een technische school is het leven voor hem een dagelijkse hel, met twee kerels die hem het leven bijna letterlijk onmogelijk maken. Ben heeft een plan. Een plan van één woord: moord! Dan komt zijn internetvriendin Scarlite in zijn leven. Dat behoorde niet tot het plan.</korte_inhoud>
					<bespreking/>
					<releaseDate>2007-09-26</releaseDate>
					<maatschappij>MMG Film and TV Production</maatschappij>
					<acteurs>
						<acteur>
							<naam>Greg Timmermans</naam>
						</acteur>
						<acteur>
							<naam>Laura Verlinden</naam>
						</acteur>
						<acteur>
							<naam>Marijke Pinoy</naam>
							<geboortedatum>1958-08-19</geboortedatum>
						</acteur>
						<acteur>
							<naam>Titus Devoogdt</naam>
						</acteur>
						<acteur>
							<naam>Maarten Claeyssens</naam>
						</acteur>
						<acteur>
							<naam>Pol Goossen</naam>
							<geboortedatum>1949-10-22</geboortedatum>
						</acteur>
					</acteurs>
					<regisseurs>
						<regisseur>
							<naam>Nic Balthazar</naam>
							<geboortedatum>1964-07-24</geboortedatum>
						</regisseur>
					</regisseurs>
					<nominaties>
						<onderscheiding>
							<naam>Grand Prix des Amériques</naam>
							<jaar>2007</jaar>
						</onderscheiding>
						<onderscheiding>
							<naam>Most Popular Film</naam>
							<jaar>2007</jaar>
						</onderscheiding>
						<onderscheiding>
							<naam>Prize of the Ecumenical Jury</naam>
							<jaar>2007</jaar>
						</onderscheiding>
					</nominaties>
				</film>
			</voorstelling>
		</zaal>
	</cinemacom>
</bioscoop>
 
iets verder

Heb ondertussen al alle genres (wel nog niet in distinct-values want dit blijkt hier niet te werken) met daartussen de acteurs (tevens niet werkende met distinct-values om zelfde rede)
Het is dus de bedoeling dat vb dit eruit komt:
Code:
<genres>
<genre naam="Drama">
<acteurs>
<acteur>naam1</acteur>
<acteur>naam2</acteur>
<acteur>naam3</acteur>
</acteurs>
</genre>
<genre naam="Thriller">
<acteurs>
<acteur>naam4</acteur>
<acteur>naam2</acteur>
<acteur>naam5</acteur>
</acteurs>
</genre>
</genres>

Het is dus perfect mogelijk dat naam2 zowel gespeeld heeft in een film met genre Drama als Thriller ...
Nu toont ie dus elk genre (soms meerdere malen ipv 1 keer) met daartussen de acteurs.
Wat doe ik verkeerd?

Dit is wat ik tot nu toe heb:
Code:
xquery version "1.0";
for $cinemacom in doc("UIT.xml")//bioscoop//cinemacom
return
	for $zaal in $cinemacom//zaal
	return
		for $voorstelling in $zaal//voorstelling
		return
			<genres>
			{
			for $film in $voorstelling//film
			return
				<genre naam="{distinct-values($film/genre)}">
				<acteurs>
				{
				for $acteur in $film//acteurs//acteur
				return
					<acteur>{distinct-values($acteur/naam)}</acteur>
				}
				</acteurs>
				</genre>
			}
			</genres>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan