Einführung in die XML-Technologien XPath, XSLT und XQuery/XQuery/Übungen FLWOR - Ausdrücke

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>XQuery</language>
Grundlage der Übungsaufgaben, ist das aus den Beispielen bekannte XML-Dokument.

<code id="4efb101804680">
<filmliste>

    <film id="1">
    <titel>Die Rueckkehr der Jedi-Ritter</titel>
        <genre>Science-Fiction</genre>
      <oscars>1</oscars>
    <regie>
        <regisseur>Richard</regisseur>
    </regie>
    <jahr>1983</jahr>
    </film>
    
    <film id="2">
    <titel>Sin City</titel>
        <genre>Thriller</genre>
     <oscars>0</oscars>
        <regie>
           <regisseur>Frank Miller</regisseur>
            <regisseur>Robert Rodriguez</regisseur>
            <regisseur>Quentin Tarantino</regisseur>
        </regie>
     <jahr>2005</jahr>   
    </film>
    
    <film id="3">
        <titel>Forrest Gump</titel>
        <genre>Drama</genre>
       
        <oscars>6</oscars>
        <regie>
            <regisseur>Robert Zemeckis</regisseur>
        </regie>
        <jahr>1994</jahr>
    </film>
    
    <film id="4">
        <titel>The Dark Knight</titel>
        <genre>Action</genre>
       
        <oscars>2</oscars>
        <regie>
            <regisseur>Christopher Nolan</regisseur>
        </regie>
        <jahr>2008</jahr>
    </film>
    
    <film id="5">
        <titel>Avatar</titel>
        <genre>Science-Fiction</genre>
        <oscars>3</oscars>
        <regie>
            <regisseur>James Cameron</regisseur>
        </regie>
        <jahr>2009</jahr>
    </film>
    
    <film id="6">
        <titel>"2012"</titel>
        <genre>Katastrophen</genre>
        <oscars>0</oscars>
        <regie>
            <regisseur>Roland Emmerich</regisseur>
        </regie>
        <jahr>2009</jahr>
    </film>
</filmliste>
</code>


1. Geben Sie für alle Filme den Titel aus, welche vor dem Jahr 2006 gedreht wurden.


<run id="4efb3922aeadb">

</run>

<popup name="Lösung">
 
 for $film in //filmliste/film
 where $film/jahr < 2006
 return $film/titel

</popup>


2. Geben Sie alle Science-Fiction Filme nach dem Erscheinungsjahr aufsteigend sortiert aus.


<run id="4efb12de32c4a">

</run>

<popup name="Lösung">
 
 for $film in //filmliste/film
 where $film/genre = "Science-Fiction"
 order by $film/jahr ascending
 return $film/titel

</popup>


3. In welchem Film führte im Jahr 2009 James Cameron Regie?


<run id="4efb12de32cd6">

</run>

<popup name="Lösung">
 
 for $film in //filmliste/film
 where $film/jahr = 2009 and $film//regisseur = "James Cameron"
 return $film/titel

</popup>


4. Generieren Sie mit Hilfe von XQuery folgendes HTML-Dokument.

<html>
   <head>
      <title>Filmübersicht</title>
   </head>
   <body>
      <h2>Filmübersicht</h2>
      <table>
         <colgroup>
            <col width="500"/>
            <col width="100"/>
         </colgroup>
            <tr>
               <th align="left">Filmtitel</th>
               <th align="left">Erscheinungsjahr</th>
            </tr>
            <tr>
               <td>Avatar</td>
               <td>2009</td>
            </tr>
            <tr>
               <td>"2012"</td>
               <td>2009</td>
            </tr>
            <tr>
               <td>The Dark Knight</td>
               <td>2008</td>
            </tr>
            <tr>
               <td>Sin City</td>
               <td>2005</td>
            </tr>
            <tr>
               <td>Forrest Gump</td>
               <td>1994</td>
            </tr>
            <tr>
               <td>Die Rueckkehr der Jedi-Ritter</td>
               <td>1983</td>
            </tr>
         </tr>
      </table>
   </body>
</html>


<popup name="Seitenquelltext">
 <nowiki>
 <html>
   <head>
      <title>Filmübersicht</title>
   </head>
   <body>
      <h2>Filmübersicht</h2>
      <table>
         <colgroup>
            <col width="500"/>
            <col width="100"/>
         </colgroup>
         <tr>
            <th align="left">Filmtitel</th>
            <th align="left">Erscheinungsjahr</th>
         </tr>
            <tr>
               <td>Avatar</td>
               <td>2009</td>
            </tr>
            <tr>
               <td>"2012"</td>
               <td>2009</td>
            </tr>
            <tr>
               <td>The Dark Knight</td>
               <td>2008</td>
            </tr>
            <tr>
               <td>Sin City</td>
               <td>2005</td>
            </tr>
            <tr>
               <td>Forrest Gump</td>
               <td>1994</td>
            </tr>
            <tr>
               <td>Die Rueckkehr der Jedi-Ritter</td>
               <td>1983</td>
            </tr>
        /table>
   </body>
</html>
 </nowiki>
</popup>


<run id="4efb3922aeb68">

</run>


<popup name="Lösung">
 <nowiki>
  <html>
     <head>
        <title>Filmübersicht</title>
     </head>
  <body>
    <h2>Filmübersicht</h2>
    <table>
    <colgroup>
        <col width="700"/>
        <col width="100"/>
      </colgroup>
    <tr>
        <th align="left">Filmtitel</th>
        <th align="left">Erscheinungsjahr</th>
    </tr>
    
        {
        for $film in //filmliste/film
        order by $film/jahr descending
        return <tr><td>{data($film/titel)}</td><td>{data($film/jahr)}</td></tr>           
        }
    
    </table>
    </body>
    </html>
 </nowiki>
</popup>