Announcement

Collapse
No announcement yet.

Entfernung von Duplikaten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Entfernung von Duplikaten

    Hallo,

    im Rahmen einer Klausuraufgabe soll ich in der XML-Datei weiter unten nach Literatur (mit Titel und Art) suchen, die für Reisen in die Region "Thüringen" empfohlen wird. Das Ergebnis erhalte ich soweit richtig, aber es sind eben noch Duplikate drin. Und genau die bekomm' ich trotz vieler Versuche nicht entfernt.

    XML-Datei:

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <Reisen>
            <Reise Nr="11">
                    <Beschreibung>Interessante Staedte Thueringens auf einer Rundreise</Beschreibung>
                    <Gebiet>
                            <Region>Thueringen</Region>
                            <Land>Deutschland</Land>
                    </Gebiet>
                    <Empfohlen>
                            <Literatur>
                                    <Titel>Thueringen</Titel>
                                    <Art>Reisefuehrer</Art>
                            </Literatur>
                    </Empfohlen>
                    <Etappen>
                            <Etappe>
                                    <ENr>1</ENr>
                                    <Ort>Weimar</Ort>
                                    <Naechte>3</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>2</ENr>
                                    <Ort>Eisenach</Ort>
                                    <Naechte>1</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>3</ENr>
                                    <Ort>Oberhof</Ort>
                                    <Naechte>1</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>4</ENr>
                                    <Ort>Erfurt</Ort>
                                    <Naechte>2</Naechte>
                            </Etappe>
                    </Etappen>
            </Reise>
            <Reise Nr="13">
                    <Beschreibung>Etappenwanderung am Rennsteig</Beschreibung>
                    <Gebiet>
                            <Region>Thueringen</Region>
                            <Land>Deutschland</Land>
                    </Gebiet>
                    <Empfohlen>
                            <Literatur>
                                    <Titel>Mittler Thueringer Wald</Titel>
                                    <Art>Wanderkarte</Art>
                            </Literatur>
                            <Literatur>
                                    <Titel>Thueringen</Titel>
                                    <Art>Reisefuehrer</Art>
                            </Literatur>
                    </Empfohlen>
                    <Etappen>
                            <Etappe>
                                    <ENr>1</ENr>
                                    <Ort>Oberhof</Ort>
                                    <Naechte>1</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>2</ENr>
                                    <Ort>Frauenwald</Ort>
                                    <Naechte>1</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>3</ENr>
                                    <Ort>Neustadt</Ort>
                                    <Naechte>1</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>4</ENr>
                                    <Ort>Friedrichshoehe</Ort>
                                    <Naechte>1</Naechte>
                            </Etappe>
                    </Etappen>
            </Reise>
            <Reise Nr="17">
                    <Beschreibung>Wandern in den Cinque Terre</Beschreibung>
                    <Gebiet>
                            <Region>Ligurien</Region>
                            <Land>Italien</Land>
                    </Gebiet>
                    <Empfohlen>
                            <Literatur>
                                    <Titel>Cinque Terre</Titel>
                                    <Art>Wanderfuehrer</Art>
                            </Literatur>
                    </Empfohlen>
                    <Etappen>
                            <Etappe>
                                    <ENr>1</ENr>
                                    <Ort>Vernazza</Ort>
                                    <Naechte>10</Naechte>
                            </Etappe>
                    </Etappen>
            </Reise><Reise Nr="27">
                    <Beschreibung>Wunderbare Staedte Italiens</Beschreibung>
                    <Gebiet>
                            <Region>Oberitalien</Region>
                            <Land>Italien</Land>
                    </Gebiet>
                    <Empfohlen>
                            <Literatur>
                                    <Titel>Verona</Titel>
                                    <Art>Stadtfuehrer</Art>
                            </Literatur>
                            <Literatur>
                                    <Titel>Milano</Titel>
                                    <Art>Stadtfuehrer</Art>
                            </Literatur>
                            <Literatur>
                                    <Titel>Genova</Titel>
                                    <Art>Stadtfuehrer</Art>
                            </Literatur>
                    </Empfohlen>
                    <Etappen>
                            <Etappe>
                                    <ENr>1</ENr>
                                    <Ort>Brixen</Ort>
                                    <Naechte>1</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>2</ENr>
                                    <Ort>Verona</Ort>
                                    <Naechte>2</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>3</ENr>
                                    <Ort>Mailand</Ort>
                                    <Naechte>4</Naechte>
                            </Etappe>
                            <Etappe>
                                    <ENr>4</ENr>
                                    <Ort>Genua</Ort>
                                    <Naechte>3</Naechte>
                            </Etappe>
                    </Etappen>
            </Reise>
    </Reisen>
    Meine bisherige Abfrage:

    Code:
    for $b in fn:doc("Reisen.xml")//Reise
    where $b/Gebiet/Region="Thueringen"
    return  $b/Empfohlen/Literatur
    
    Ergebnis (eben noch mit Duplikaten):
    <Literatur>
      <Titel>Thueringen</Titel>
      <Art>Reisefuehrer</Art>
    </Literatur>
    <Literatur>
      <Titel>Mittler Thueringer Wald</Titel>
      <Art>Wanderkarte</Art>
    </Literatur>
    <Literatur>
      <Titel>Thueringen</Titel>
      <Art>Reisefuehrer</Art>
    </Literatur>
    Ich komme einfach nicht weiter. Weder mit dem LET-Ausdruck, noch mit ähnlichen Konstrukten wie

    Code:
    for $c in doc("Reisen.xml")//Literatur
    where fn:count($c/Titel) != fn:count(fn:distinct-values($c/Titel))
    return $c
    Kann mir jemand weiterhelfen?

    VG
    Matthias

  • #2
    Hier ein Ansatz, der mittels distinct-values bezüglich des Titel-Elementes arbeitet:
    Code:
    let $lit := doc('Reisen.xml')/Reisen/Reise[Gebiet/Region = 'Thueringen']/Empfohlen/Literatur
    for $titel in distinct-values($lit/Titel)
    return $lit[Titel = $titel][1]
    Ein anderer Ansatz:
    Code:
    let $lits := doc('Reisen.xml')/Reisen/Reise[Gebiet/Region = 'Thueringen']/Empfohlen/Literatur
    for $lit in $lits
    where $lit is $lits[Titel = $lit/Titel][1]
    return $lit

    Comment


    • #3
      Hallo Martin,

      vielen Dank für deine schnelle und hilfreiche Antwort!

      Und die beiden Ansätze helfen mir beim Verständnis der XQuery-Anfragen!

      Comment

      Working...
      X