Inhalt (Übungsaufgaben zu XPath)

  1. Übungsaufgaben zu XPath [3]

XPath Übungsaufgabe 1: XMLBooks

Formulieren Sie zu untenstehendem XML-Dokument XPath-Anfragen, die die geforderten Knotenmengen aus dem Dokument extrahieren.
Sie benötigen hierzu die XPath-Funktionen boolean: contains(value,substring) und number : count(nodeset)

  1. Geben Sie den XPath-Ausdruck an, der alle Bücher die im Vereinigten Königreich (UK) erschienen sind, lokalisiert.
  2. Geben Sie einen XPath-Ausdruck an, der die Titel aller Bücher lokalisiert, die durch mehr als einen Autor geschrieben wurden.
  3. Welche(n) Knoten lokalisiert der Ausdruck /XMLBooks/book[(position() div 2) = 1] ?
  4. Welche(n) Knoten lokalisiert der Ausdruck //book[authors/author[.='W. Scott Means']]/title ?
<?xml version="1.0" encoding="UTF-8"?>
<XMLBooks>
 <book>
  <title>XML in a Nutshell</title>
  <authors>
   <author>Elliotte Rusty Harrold</author>
   <author>W. Scott Means</author>
  </authors>
  <publisher>O'Reilly</publisher>
  <address>Bejing (China), Cambridge (UK), Framingham (USA), et al.</address>
 </book>
 <book>
  <title>The XML Handbook</title>
  <authors>
   <author>Charles F. Goldfarb</author>
   <author>Paul Prescod</author>
  </authors>
  <publisher>Prentice Hall</publisher>
  <address>Upper Addle River (USA)</address>
 </book>
 <book>
  <title>XSLT Quickly</title>
  <authors>
   <author>Bob DuCharme</author>
  </authors>
  <publisher>Manning</publisher>
  <address>Greenwich (USA)</address>
 </book>
</XMLBooks>

XPath Übungsaufgabe 2: Stammbaum

Formulieren Sie zu untenstehendem XML-Dokument XPath-Anfragen, die die geforderten Knotenmengen aus dem Dokument extrahieren.
Sie benötigen hierzu die XPath-Funktionen substring(string,start,end) .
string entspricht der zu verarbeitenden Zeichenkette, start der Startposition und end der Endposition.

  1. Lokalisieren Sie den Namen desjenigen Herrschers, der ab 1509 regierte.
  2. Extrahieren Sie die Sterbejahre aller Herrscher namens Heinrich (verwenden Sie hierzu die substring -Funktion).
  3. Lokalisieren Sie den Personen-Knoten derjenigen Herrscher, die zwischen 1550 und 1640 gekrönt wurden und die gleichzeitig Nachfahren Heinrich VIII. sind.
<?xml version="1.0" encoding="ISO-8859-1"?>
<Stammbaum>
 <Person
  gekrönt="1485"
  gestorben="1509">
  <Name>Heinrich VII.</Name>
  <Person
   gekrönt="1509"
   gestorben="1547">
   <Name>Heinrich VIII.</Name>
   <Person
    gekrönt="1553"
    gestorben="1558">
    <Name>Maria I.</Name>
   </Person>
   <Person
    gekrönt="1547"
    gestorben="1553">
    <Name>Edward VI.</Name>
   </Person>
   <Person
    gekrönt="1558"
    gestorben="1603">
    <Name>Elisabeth I.</Name>
   </Person>
  </Person>
  <Person
   gekrönt="1603"
   gestorben="1625">
   <Name>James I.</Name>
   <Person
    gekrönt="1625"
    gestorben="1649">
    <Name>Charles I.</Name>
    <Person
     gekrönt="1649"
     gestorben="1660">
     <Name>Oliver Cromwell</Name>
    </Person>
   </Person>
  </Person>
 </Person>
</Stammbaum>

XPath Übungsaufgabe 3: Stammbaum v2

Formulieren Sie zu untenstehendem XML-Dokument XPath-Anfragen, die die geforderten Knotenmengen aus dem Dokument extrahieren.

  1. Lokalisieren Sie die erfaßten Kinder von Friedrich Wilhelm I.
  2. Extrahieren Sie die Namen der drei Herrscher des „Dreikaiserjahres“ 1888.
<?xml version="1.0" encoding="UTF-8"?>
<Stammbaum>
  <Name beiname="Der Große Kurfürst">Friedrich Wilhelm</Name>
  <Regiert von="1640" bis="1688"/>
  <Sohn>
    <Name beiname="König in Preußen">Friedrich III.</Name>
    <Regiert von="1688" bis="1713"/>
    <Sohn>
      <Name beiname="Soldatenkönig">Friedrich Wilhelm I.</Name>
      <Regiert von="1713" bis="1740"/>
      <Sohn>
        <Name beiname="Der Große">Friedrich II.</Name>
        <Regiert von="1740" bis="1786"/>
      </Sohn>
      <Sohn>
        <Name beiname="Prinz von Preussen">August Wilhelm</Name>
        <Sohn>
          <Name>Friedrich Wilhelm II.</Name>
          <Regiert von="1786" bis="1797"/>
          <Sohn>
            <Name>Friedrich Wilhelm III.</Name>
            <Regiert von="1797" bis="1840"/>
            <Sohn>
              <Name>Friedrich Wilhelm IV.</Name>
              <Regiert von="1840" bis="1858"/>
            </Sohn>
            <Sohn>
              <Name type="deutscher Kaiser">Wilhelm I.</Name>
              <Regiert von="1858" bis="1888"/>
              <Sohn>
                <Name type="deutscher Kaiser">Friedrich III.</Name>
                <Regiert von="1888" bis="1888"/>
                <Sohn>
                  <Name type="deutscher Kaiser">Wilhelm II.</Name>
                  <Regiert von="1888" bis="1918"/>
                </Sohn>
              </Sohn>
            </Sohn>
          </Sohn>
        </Sohn>
      </Sohn>
    </Sohn>
  </Sohn>
</Stammbaum>