Übungsserie 5: XML-Schemas, 

Theoretische Grundlagen der Informatik, WS 02/03

Dozenten: J.-M. Piveteau, U.-M. Künzi

Aufgabe 1(XML-Schema, Namensräume)

Erstellen Sie ein XML-Schema für die neue XML-Anwendung AutoML, welche zur Beschreibung von Motorfahrzeugen verwendet werden kann. Mit AutoML soll es möglich sein, den Inhalt folgender Muster-Tabellen zu speichern:

Kurzbeschreibung

Typ:     Lastwagen

Marke:   Renault

Model:   Kerax

Detailbeschreibung

Typ:          PKW

Marke:        Citroën

Model:        Saxo

Schildnummer: ZH 123456

Kilometer:    87'654

Farbe:        Rot

Besitzer:     Jules Dumol

Der Namensraum http://www.hsr.ch/automobile wird der XML-Anwendung AutoML zugeordnet. Passen Sie Ihr XML-Schema an und erstellen Sie ein gültiges AutoML-Instanzdokument für das angepasste Schema.

Aufgabe 2 (XPath)

Werten Sie die XPath-Ausdrücke aus:

  1. /FAMILYTREE/PERSON/NAME
    Referenziert alle Personennamen:
    <Name>Jean Dupont</Name>
    <Name>Marianne Durand</Name>
    <Name>Anne Dupont</Name>
    <Name>Hans Müller</Name>
    <Name>Eugene Dupont</Name>
    <Name>Marie Dupont</Name>
    <Name>Philippe Dubois</Name>
    <Name>Achille Hector Archibald Dubois</Name>

  2. /FAMILYTREE/PERSON[position()>1]
    Referenziert alle Personennamen ausser dem ersten Element:
    <Name>Marianne Durand</Name>
    <Name>Anne Dupont</Name>
    <Name>Hans Müller</Name>
    <Name>Eugene Dupont</Name>
    <Name>Marie Dupont</Name>
    <Name>Philippe Dubois</Name>
    <Name>Achille Hector Archibald Dubois</Name>

  3. /child::*/child::PERSON[position()=1]
    Referenziert die erste Person im Dokument:
    <PERSON ID="p1">
    <NAME>Jean Dupont</NAME>
    <BORN>12. März 1801</BORN>
    <DIED>12. März 1901</DIED>
    <SPOUSE IDREF="p2"/>

    </PERSON>

  4. /child::*/child::PERSON[position()=1]/child::NAME
    Referenziert das erste Element des Dokuments, gibt allerdings nur den Namen aus:
    <Name>Jean Dupont</Name>

  5. /descendant::DIED[position()=3]/::preceeding::*[position()=2]
    <NAME>Anne Dupont</NAME>

  6. id("p6"/child::DIED]
    Referenziert das Todesdatum der Person mit der ID=6:
    <Died>12. Juli 1920</Died>

im folgenden XML-Dokument aus:

<?xml version="1.0"?>

<!DOCTYPE FAMILYTREE [

<!ELEMENT FAMILYTREE (PERSON | FAMILY)*>

<!-- PERSON elements -->

<!ELEMENT PERSON (NAME*, BORN*, DIED*, SPOUSE*)>

<!ATTLIST PERSON

  ID ID #REQUIRED

  FATHER CDATA #IMPLIED

  MOTHER CDATA #IMPLIED>

<!ELEMENT NAME (#PCDATA)>

<!ELEMENT BORN (#PCDATA)>

<!ELEMENT DIED (#PCDATA)>

<!ELEMENT SPOUSE EMPTY>

<!ATTLIST SPOUSE IDREF IDREF #REQUIRED>

<!--FAMILY-->

<!ELEMENT FAMILY (HUSBAND?, WIFE?, CHILD*) >

<!ATTLIST FAMILY ID ID #REQUIRED>

<!ELEMENT HUSBAND EMPTY>

<!ATTLIST HUSBAND IDREF IDREF #REQUIRED>

<!ELEMENT WIFE EMPTY>

<!ATTLIST WIFE IDREF IDREF #REQUIRED>

<!ELEMENT CHILD EMPTY>

<!ATTLIST CHILD IDREF IDREF #REQUIRED>

]>

<FAMILYTREE>

<PERSON ID="p1">

    <NAME>Jean Dupont</NAME>

    <BORN>12. März 1801</BORN>

    <DIED>12. März 1901</DIED>

    <SPOUSE IDREF="p2"/>

</PERSON>

<PERSON ID="p2">

    <NAME>Marianne Durand</NAME>

    <BORN>1. April 1805</BORN>

    <DIED>31. Dezember</DIED>

    <SPOUSE IDREF="p1"/>

</PERSON>

<PERSON ID="p3" FATHER="p2" MOTHER="p1">

    <NAME>Anne Dupont</NAME>

    <BORN>11. Februar 1838</BORN>

    <DIED>12. April 1912</DIED>

    <SPOUSE IDREF="p4"/>

</PERSON>

<PERSON ID="p4">

    <NAME>Hans Müller</NAME>

    <SPOUSE IDREF="p3"/>

</PERSON>

<PERSON ID="p5" FATHER="p2" MOTHER="p1">

    <NAME>Eugène Dupont</NAME>

    <BORN>3. Januar 1839</BORN>

    <DIED>12. April 1839</DIED>

</PERSON>

 

<PERSON ID="p6" FATHER="p2" MOTHER="p1">

    <NAME>Marie Dupont</NAME>

    <BORN>3. Dezember 1840</BORN>

    <DIED>12. Juli 1920</DIED>

    <SPOUSE IDREF="p7"/>

</PERSON>

 

<PERSON ID="p7">

    <NAME>Philippe Dubois</NAME>

    <BORN>3. Januar 1846</BORN>

    <SPOUSE IDREF="p6"/>

</PERSON>

<PERSON ID="p8" FATHER="p6" MOTHER="p7">

    <NAME>Achille Hector Archibald Dubois</NAME>

    <BORN>29. Oktober 1870</BORN>

    <DIED>3. Mai 1938</DIED>

</PERSON>

 

</FAMILYTREE>

 

Aufgabe 3 (XLink, CSS)

Erstellen Sie ein XML-Dokument, das die folgende Liste von Web-Sites zum Thema Pilzkunde auflistet:

  1. Pilz.ch (http://www.pilze.ch/default.htm)

  2. Swissfungi (http://www.wsl.ch/swissfungi/)

  3. Verein für Pilzkunde Zürich (http://www.pilze.ch/PVZuerich/PV-Zuerich.html)

  4. Mykologische Gesellschaft Luzern (http://www.mgl.ch.vu/)

  5. Società Micologica Chiasso (http://www.ticino.com/usr/smcb/)

Die URL jeder Website muss mit XLink angegeben werden. Verwenden Sie dabei die Attribute xlink:show, xlink:actuate, xlink:title und xlink:role.

Erstellen Sie eine CSS-Stylesheet für Ihr Dokument und testen Sie das Ergebnis mit verschiedenen Browsern (Internet Explorer, Mozilla, etc.)

XML-File
<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="Pilz.css"?>
<Pilzseiten>
  <Name xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
     xlink:href="http://www.pilze.ch/default.htm" xlink:show="new"
     xlink:actuate="onRequest" xlink:tilte="Pilz.ch Webseite"
     xlink:role="http://www.pilze.ch/">Pilz.ch</Name>
  <Name xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
     xlink:href="http://www.wsl.ch/swissfungi/" xlink:show="new"
     xlink:actuate="onRequest" xlink:tilte="Swissfungi Webseite"
     xlink:role="http://www.wsl.ch/">Swissfungi</Name>
  <Name xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
     xlink:href="http://www.pilze.ch/PVZuerich/PV-Zuerich.html" xlink:show="new"
     xlink:actuate="onRequest" xlink:tilte="Verein für Pilzkunde Zürich
     Webseite" xlink:role="http://www.pilze.ch/PVZuerich/">Verein für Pilzkunde
     Zürich</Name>
  <Name xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
     xlink:href="http://www.mgl.ch.vu/" xlink:show="new"
     xlink:actuate="onRequest" xlink:tilte="Mykologische Gesellschaft Luzern"
     xlink:role="http://www.mgl.ch.vu/">Mykolog. Gesellschaft Luzern</Name>
  <Name xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple"
     xlink:href="http://www.ticino.com/usr/smcb/" xlink:show="new"
     xlink:actuate="onRequest" xlink:tilte="Società Micologica Chiasso"
     xlink:role="http://www.ticino.com/usr/smcb/">Società Micologica
     Chiasso</Name>
</Pilzseiten>
CSS-File
Pilzseiten{display:table}
Name{ display: table-row;
             display:list-item;}
.....