alvoen Skrevet 25. november 2008 Skrevet 25. november 2008 Hei! Jeg har følgende spørringer som jeg trenger hjelp til: "Finn platene som inneholder flest spor", "Finn tittelen på plater med flere versjoner av samme verk", "Finn opphavet til "blabla", det vil si det opprinnelige/første versjonen av verket", "Finn plater der alle sporene inneholder versjoner av hverandre". Er det noen som har noen maler på hvordan disse spørringene kan løses?
steingrim Skrevet 25. november 2008 Skrevet 25. november 2008 (endret) Det er helt umulig å hjelpe deg uten å se Xml Schema eller i det minste et eksempel-dokument. Edit: ved nærmere ettersyn ser jeg at spørringene dine er av en karakter som ikke så enkelt kan løses med xpath... Xpath har ingen formening om hva "samme verk" er eller "opphav" i denne konteksten. Xpath er et språk for å velge noder i et xml-dokument som ikke egner seg for å gjøre semantiske betraktninger. Endret 25. november 2008 av steingrim
alvoen Skrevet 25. november 2008 Forfatter Skrevet 25. november 2008 Det er helt umulig å hjelpe deg uten å se Xml Schema eller i det minste et eksempel-dokument. Edit: ved nærmere ettersyn ser jeg at spørringene dine er av en karakter som ikke så enkelt kan løses med xpath... Xpath har ingen formening om hva "samme verk" er eller "opphav" i denne konteksten. Xpath er et språk for å velge noder i et xml-dokument som ikke egner seg for å gjøre semantiske betraktninger. Stemmer! Rekursjon er vel et stikkord her.
Glenn F. Henriksen Skrevet 25. november 2008 Skrevet 25. november 2008 Hvorfor har du dette i en XML fil og ikke i en database? Hvilket språk bruker du?
alvoen Skrevet 25. november 2008 Forfatter Skrevet 25. november 2008 Hvorfor har du dette i en XML fil og ikke i en database? Hvilket språk bruker du? Det er en XML-fil som kobles opp mot en RNC-fil. Spørrespråket er Xpath og XQuery.
rable Skrevet 26. november 2008 Skrevet 26. november 2008 Her er xml-dokumententet: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <skjema> <plate katalognummer="BCM0644"> <artist>Kent</artist> <tittel>Blue</tittel> <dato>2008</dato> <selskap>Sony</selskap> <format>album</format> <alleSporene> <spor> <verk>V123456</verk> <spilletid>05.01.09</spilletid> </spor> <spor> <verk>'Valdresmarsjen'</verk> <spilletid>08.01.09</spilletid> </spor> </alleSporene> </plate> <plate katalognummer="BCM0643"> <artist>M2M</artist> <tittel>Red</tittel> <dato>2008</dato> <selskap>Sony</selskap> <format>album</format> <alleSporene> <spor> <verk>V123456</verk> <spilletid>08.01.09</spilletid> </spor> <spor> <verk>jazz</verk> <spilletid>05.01.09</spilletid> </spor> <spor> <verk>rock</verk> <spilletid>02.01.09</spilletid> </spor> </alleSporene> </plate> <plate katalognummer="BCM0642"> <tittel>Green</tittel> <artist>Kent</artist> <dato>2008</dato> <selskap>BMG</selskap> <format>singel</format> <alleSporene> <spor> <verk>pop</verk>> <spilletid>08.01.09</spilletid> </spor> </alleSporene> </plate> <plate katalognummer="BCM0641"> <tittel>Pink</tittel> <artist>Carola</artist> <dato>2008</dato> <selskap>BMG</selskap> <format>ep</format> <alleSporene> <spor> <verk>sannaVenner</verk> <spilletid>08.01.09</spilletid> </spor> <spor> <verk>sannaVenner</verk> <spilletid>03.01.09</spilletid> </spor> <spor> <verk>sannaVenner</verk> <spilletid>00.51.09</spilletid> </spor> </alleSporene> </plate> <plate katalognummer="BCM0640"> <tittel>Black</tittel> <artist>Carola</artist> <artist>Kent</artist> <dato>2008</dato> <selskap>BMG</selskap> <format>ep</format> <alleSporene> <spor> <verk>Valdresmarsjen</verk> <spilletid>11.01.09</spilletid> </spor> <spor> <verk>sannaVenner</verk> <spilletid>03.01.09</spilletid> </spor> <spor> <verk>sannaVenner</verk> <spilletid>00.51.09</spilletid> </spor> </alleSporene> </plate> <AlleVerk> <verk id="V123456"> <tittel>Holbergsuiten</tittel> <remix> <versjonverk> <tittel>sol</tittel> </versjonverk> </remix> </verk> <verk id="'Valdresmarsjen"> <tittel>Valdresmarsjen</tittel> <remix> <versjonverk> <tittel/> </versjonverk> </remix> </verk> <verk id="jazz"> <tittel>Jazz</tittel> <remix> <versjonverk> <tittel/> </versjonverk> </remix> </verk> <verk id="rock"> <tittel>Rock</tittel> <remix> <versjonverk> <tittel/> </versjonverk> </remix> </verk> <verk id="pop"> <tittel>Pop</tittel> <remix> <versjonverk> <tittel/> </versjonverk> </remix> </verk> <verk id="sannaVenner"> <tittel>Sanna Venner</tittel> <remix> <versjonverk> <tittel/> </versjonverk> </remix> </verk> </AlleVerk> <artistNavn> <artist artist="Kent"> <medlem> <navn>Kent</navn> <instrument>gitar</instrument> <startet>2000</startet> <sluttet/> </medlem> <medlem> <navn>Bernt</navn>Bernt <instrument>piano</instrument> <startet>2000</startet> <sluttet/> </medlem> </artist> <artist artist="M2M"> <medlem> <navn>Marit Larsen</navn> <instrument>Gitar</instrument> <startet>2000</startet> <sluttet>2006</sluttet> </medlem> <medlem> <navn>Marion Ravn</navn> <instrument>Piano</instrument> <startet>2000</startet> <sluttet>2006</sluttet> </medlem> </artist> <artist artist="Carola"> <medlem> <navn>Carola</navn> <instrument/> <startet>1990</startet> <sluttet/> </medlem> </artist> </artistNavn> </skjema> Trenger hjelp til å hente ut følgende informasjon ved bruk av XPath: - Artister som har spilt inn både 'Holbergsuiten' og 'Valdresmarsjen'. - Plateartister som har gitt ut plater på alle plateselskapene. - Tittelen på plater med flere versjoner av samme verk. - Plater der alle sporene er versjoner av hverandre.
rable Skrevet 26. november 2008 Skrevet 26. november 2008 Hei! Jeg har følgende spørringer som jeg trenger hjelp til: "Finn platene som inneholder flest spor", "Finn tittelen på plater med flere versjoner av samme verk", "Finn opphavet til "blabla", det vil si det opprinnelige/første versjonen av verket", "Finn plater der alle sporene inneholder versjoner av hverandre". Er det noen som har noen maler på hvordan disse spørringene kan løses? "Finn platene som inneholder flest spor", Her er en mulig løsning: //plate[count(./alleSporene/spor) = //max(plate/count(./alleSporene/Spor))]/@katalognummer Vet ikke hvordan de andre skal løses.
rogi Skrevet 26. november 2008 Skrevet 26. november 2008 (endret) Hei! Jeg har følgende spørringer som jeg trenger hjelp til: "Finn platene som inneholder flest spor", "Finn tittelen på plater med flere versjoner av samme verk", "Finn opphavet til "blabla", det vil si det opprinnelige/første versjonen av verket", "Finn plater der alle sporene inneholder versjoner av hverandre". Er det noen som har noen maler på hvordan disse spørringene kan løses? "Finn platene som inneholder flest spor", Her er en mulig løsning: //plate[count(./alleSporene/spor) = //max(plate/count(./alleSporene/Spor))]/@katalognummer Vet ikke hvordan de andre skal løses. Forresten: Er det noen som kan hjelpe med dette. Lag en html-oversikt over platene, med plateartister, tittel og årstall. Sorter primært med hensyn på årstall, nyeste først, sekundert på artist og til slutt artist. Vi får bare opp bakgrunnsfargen og hr/. declare default element namespace "http://www.w3.org/1999/xhtml"; declare namespace p="skjema"; declare namespace h="here"; <html> <head><title>Platesamling</title></head> <body bgcolor="red"> <hr/> { for $plate in fn:doc("selskap.xml")/p:skjema/p:plate order by $plate/p:dato descending, p:spor/artist, $plate/p:tittel return ($plate/p:dato/text(),(","), data($plate//p:spor/artist), (","), $plate/p:tittel/text(),(",")) } </body> </html> Endret 26. november 2008 av rogi
Wumpus Skrevet 27. november 2008 Skrevet 27. november 2008 (endret) Hvis du i XML filen legger til følgende attributt: <skjema xmlns = "skjema"> og i xquery fila gjør følgende forandringer: declare default element namespace "skjema"; Tror det vil fungere da.. ps. Husk å fikse på prefiksene i selve spørringene også Jeg klarte ikke dy meg.. Nedenfor ser du hvordan det kan gjøres.. Grunnen til $plate/artist[1] er at du kan ikke sortere på flere verdi samtidig. Nå blir det kun sortert på den første artisten som opptrer på platen. declare default element namespace "skjema"; <html> <head><title>Platesamling</title></head> <body bgcolor="red"> <hr/> <ul> { for $plate in fn:doc("skjema.xml")/skjema/plate order by $plate/dato descending, $plate/artist[1], $plate/tittel return <li> { $plate/dato/text(), " - ", fn:distinct-values($plate/artist), " - ", $plate/tittel/text()} </li> } </ul> </body> </html> Endret 27. november 2008 av Wumpus
rable Skrevet 27. november 2008 Skrevet 27. november 2008 Takk wumpus! Har du peiling på hvordan man skriver disse spørringene i xpath? - Tittelen på plater med flere versjoner av samme verk. - Plater der alle sporene er versjoner av hverandre.
Wumpus Skrevet 27. november 2008 Skrevet 27. november 2008 (endret) Ja.. Men strengt tatt så bør dere vel gjøre de obligatoriske oppgavene deres selv Tips - Dropp XPath i de spørringene, det er noe enklere i XQuery... edit: Jeg er et svakt menneske.. I XML filen deres så har dere ikke noe som kan knytte verk med spor, på denne måten er det heller vanskelig å koble disse to og sjekke om det er samme/en annen versjon.. Endret 27. november 2008 av Wumpus
rogi Skrevet 27. november 2008 Skrevet 27. november 2008 Ja.. Men strengt tatt så bør dere vel gjøre de obligatoriske oppgavene deres selv Tips - Dropp XPath i de spørringene, det er noe enklere i XQuery... edit: Jeg er et svakt menneske.. I XML filen deres så har dere ikke noe som kan knytte verk med spor, på denne måten er det heller vanskelig å koble disse to og sjekke om det er samme/en annen versjon.. Strengt tatt burde vi det. Vi prøver og prøver men får det ikke til
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå