Announcement

Collapse
No announcement yet.

Hilfe Klausurvorbereitung

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

  • Hilfe Klausurvorbereitung

    Hallo zusammen, ich benötige ein bisschen Hilfe für meine Klausurvorbereitung.
    Da es sich um ein Fernstudium handelt, muss ich eben hier im Forum Fragen :-)
    Ich habe folgende XML gegeben:

    Code:
    <Bib>
    		<Buch Jahr="1994">
    			<Titel>TCP/IP Illustrated</Titel>
    			<Autor>
    				<Zuname>Stevens</Zuname>
    				<Vorname>W.</Vorname>
    			</Autor>
    			<Herausgeber>Addison-Wesley</Herausgeber>
    			<Preis>95.95</Preis>
    			<Kritiken>
    				<Kritik>
    					<Bewertung>1.0</Bewertung>
    				</Krtik>
    				<Kritik>
    					<Bewertung>3.0</Bewertung>
    				</Kritik>
    			</Kritiken>
    		</Buch>
    
    		<Buch Jahr="1992">
    			<Titel>Advanced Programming</Titel>
    			<Autor>
    				<Zuname>Stevens</Zuname>
    				<Vorname>W.</Vorname>
    			</Autor>
    			<Herausgeber>Addison-Wesley</Herausgeber>
    			<Preis>65.95</Preis>
    		</Buch>
    
    		<Buch Jahr="2000">
    			<Titel>Data on the Web</Titel>
    			<Autor>
    				<Zuname>Abiteboul</Zuname>
    				<Vorname>Serge.</Vorname>
    			</Autor>
    			<Autor>
    				<Zuname>Buneman</Zuname>
    				<Vorname>Peter.</Vorname>
    			</Autor>
    			<Herausgeber>Morgan Kaufmann</Herausgeber>
    			<Preis>35.95</Preis>
    			<Kritiken>
    				<Kritik>
    					<Bewertung>2.0</Bewertung>
    				</Krtik>
    			</Kritiken>
    		</Buch>
    
    		<Buch Jahr="1999">
    			<Titel>The Economics of Technology</Titel>
    			<Editor>
    				<Zuname>Gerbarg</Zuname>
    				<Vorname>Darcy.</Vorname>
    				<Klassifikation>CITI</Klassifikation>
    			</Editor>
    			<Herausgeber>Kluwer</Herausgeber>
    			<Preis>135.95</Preis>
    		</Buch>
    </Bib>
    Ich soll nun folgende Abfragen sowohl in XPath als auch in XQuery angeben.

    1. Titel, Preis, Herausgeber jedes Busches, nach 1998, sortiert nach Herausgeber
    2. Für jedes Buch, das mindestens eine Kritik hat, den Titel und die durchschnittliche Bewertung ausgeben
    3. Erstellen Sie eine Liste aller Herausgeber, wobei diese Liste durch ein Herausgeber-Element gekapselt sein soll
    4. Finden Sie die Titel der Bücher, in deren Titel "web" vorkommt. Nur die Inhalte des Titels
    5. Für jeden Autor den Zunamen und den Durchschnittspreis aller Bücher


    Leider weiß ich nicht wirklich, wir ich an diese Sache rangehen soll und wäre deshalb super dankbar, wenn ich hierfür Hilfe bekommen könnte.
    Vielen Dank im Voraus.

    Da ich weiß, dass das ganze auch mit Arbeit verbunden ist, biete ich auch gerne einen Gutschein Amazon, iTunes etc. an. Also "Freundschaftsdienst"

    Martin
    Zuletzt editiert von enzo0812; 06.02.2010, 12:31.

  • #2
    Auch wenn Du ein Fernstudium machst, gibt es doch sicher eine Art Lehrbrief oder sonstige Anleitungen zu XPath und Co. Ich werde Dir jetzt nicht Deine kompletten Hausaufgaben machen, aber hier mal drei XPath-Einzeiler zur Orientierung:

    2. for $b in //Buch return avg($b[count(Kritiken/Kritik) > 0]//Bewertung)

    Ergebnis:
    2
    2


    4. //Buch[Titel[contains(lower-case(.),'web')]]/Titel

    Ergebnis:
    Data on the Web


    5. for $a in distinct-values(//Autor/Zuname) return concat($a,' : ',avg(//Buch[Autor/Zuname = $a]/Preis))

    Ergebnis:
    Stevens : 80.95
    Abiteboul : 35.95
    Buneman : 35.95

    Comment


    • #3
      Hallo,
      nein natürlich nicht.
      Es sind auch keine Hausaufgaben, sondern eine Altklausur.
      Wir haben keine Abfragen in dieser Schwierigkeitsstufe (Speziell Punkt 3) gemacht.

      Trotzdem vielen Dank für Deine Antwort, das hat mir ja schonmal ein bisschen weitergeholfen.

      Über eine vollständige "Lösung" wäre ich trotzdem sehr dankbar.

      Viele Grüße

      Comment


      • #4
        3. lässt sich mit XQuery 1.0 folgendermassen lösen:
        Code:
        <Herausgeber>{string-join(distinct-values(//Herausgeber), ', ')}</Herausgeber>

        Comment


        • #5
          Hallo und vielen Dank für die Antwort.
          Weißt Du auch, wie sich das ganze mit XPath ausdrücken lässt?

          Vielen Dank....

          Comment


          • #6
            Originally posted by enzo0812 View Post
            Hallo und vielen Dank für die Antwort.
            Weißt Du auch, wie sich das ganze mit XPath ausdrücken lässt?

            Vielen Dank....
            Mit XPath lassen sich nur Knoten in einem bestehenden XML-Dokument selektieren, aber keine neuen Knoten erzeugen. Die Aufgabe, ein neues 'Herausgeber'-Element zu erzeugen, lässt sich also nur mit XQuery, aber nicht mit XPath lösen.
            Zuletzt editiert von Martin Honnen; 09.02.2010, 13:53. Reason: bessere Formulierung

            Comment


            • #7
              Hallo Martin,
              ah.....vielen Dank. Dann scheint da irgendwie ein Fehler zu sein.

              Kannst Du mir denn bei den anderen Ausdrücken noch helfen?

              Beste Grüße

              Comment


              • #8
                Hallo zusammen.
                So ist denn das, was ich mir hier überlegt habe richtig?

                1. Titel, Preis, Herausgeber jedes Busches, nach 1998, sortiert nach Herausgeber
                XPath:
                /Buch[(Jahr)>1998]/Titel
                wie bekomme ich den Preis und Herausgeber noch mit angehängt und die Sortierung?

                XQuery:
                for $k in /Bib/Buch where ($k/jahr)>1998 return $k/Titel
                Wie bekomme ich auch hier den Preis und Herausgeber noch mit angehängt?
                Wie bekomme ich das sortiert?

                2. Für jedes Buch, das mindestens eine Kritik hat, den Titel und die durchschnittliche Bewertung ausgeben
                XQuery:
                for $k in /Bib/Buch where ($k/Kritik)>0 return $k/Titel
                Auch hier wieder, wie bekomme ich die durchschnittliche Bewertung?

                4. Finden Sie die Titel der Bücher, in deren Titel "web" vorkommt. Nur die Inhalte des Titels
                XQuery:
                for $k in /Bib/Buch where $k/Titel='web' return $k/Titel

                5. Für jeden Autor den Zunamen und den Durchschnittspreis aller Bücher
                XQuery:
                for $k in /Bib/Buch where $k .... return ...
                Hier weiß ich wirklich nicht weiter?

                Bitte um Hilfe und Korrektur.

                Vielen Dank

                Comment


                • #9
                  4. //Buch[Titel[contains(lower-case(.),'web')]]/Titel

                  Ergebnis:
                  Data on the Web


                  Könnte man das auch nicht so schreiben:

                  //Buch[contains(Titel, 'web')]/Titel

                  ??

                  Comment


                  • #10
                    Nein, denn im Buch-Kontext gibt es den gesuchten Titel-Textknoten nicht, aber das wäre möglich: //Buch/Titel[contains(.,'web')]/text(). Allerdings gibt auch das nur Ergebnisse, wenn Web --> nach web konvertiert wird, also die lower-case-Variante: //Buch/Titel[contains(lower-case(.),'web')]/text().

                    Ansonsten einfach ausprobieren.

                    Comment


                    • #11
                      Hallo zusammen,
                      kann mir keiner diese Fragen beantworten?

                      "wie bekomme ich den Preis und Herausgeber noch mit angehängt und die Sortierung?"

                      Hilfe :-(

                      Comment


                      • #12
                        XQ:
                        for $b in //Buch[@Jahr > 1998]
                        order by $b/Herausgeber
                        return concat($b/Titel,' ',$b/Preis,' ',$b/Herausgeber,'&#xA;')


                        Ergebnis:
                        The Economics of Technology 135.95 Kluwer
                        Data on the Web 35.95 Morgan Kaufmann

                        Comment


                        • #13
                          Ok Prima und in XPath.
                          Weil ich da ja eigentlich nur eine Knotenfolge habe und ich finde auch kein Beispiel, bei dem man mehrere Tags (Preis, Herausgeber etc.) zurückgeliefert bekommt.
                          Oder ist das einfach global book?

                          Comment


                          • #14
                            XPath alleine kann nicht sortieren oder ordnen, dass können nur XSLT oder XQuery.
                            Zuletzt editiert von Martin Honnen; 12.02.2010, 14:26. Reason: Korrektur eines Wortes

                            Comment


                            • #15
                              Ok, also bekomme ich das gar nicht gelöst.

                              Stimmen denn meine anderen XQ Abfragen?
                              Nicht ganz oder? *g*

                              Comment

                              Working...
                              X