Einsendeaufgabe zu Studienheft XML 2

- Einführung ins Standard der XML-Verarbeitung -

Frage 1

Das nachstehende XML-Dokument „Auftrag“ ist noch unvollständig:
Vervollständigen Sie dieses Dokument:

<?xml version=“1.0“ _______________?>
<Auftrag>
  <Auftragskopf>
    <Adresse>
      _______________
      _______________
      _______________
      _______________
      _______________
      _______________
      _______________
      _______________
    <Adresse>
  </Auftragskopf>
  <Position>
    <Bestellposition>
    <Bezeichnung>Lernheft XML 1</Bezeichnung>
    <Artikelnummer>4711</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
    </Bestellposition>
    <Bestellposition>
    <Bezeichnung>Lernheft XML 2</Bezeichnung>
    <Artikelnummer>4712</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
    _______________
  _______________
</Auftrag>

a) Ergänzen Sie den Prolog, sodass im Dokument auch Umlaute erlaubt sind.

<?xml version=“1.0“ encoding="ISO-8859-1"?>

b) Ergänzen Sie den unteren Teil „Position“, sodass ein wohlgeformtes Dokument entsteht.

<Position>
  <Bestellposition>
    <Bezeichnung>Lernheft XML 1</Bezeichnung>
    <Artikelnummer>4711</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
  </Bestellposition>
  <Bestellposition>
    <Bezeichnung>Lernheft XML 2</Bezeichnung>
    <Artikelnummer>4712</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
  </Bestellposition>
</Position>

c) Ergänzen Sie den Teil „Adresse“: Eine Adresse soll die Elemente „Name“ (untergliedert in „Nachname“ und „Vorname“), „Strasse“, „Hausnummer“, „Ort“ und „E-Mail“ enthalten. Die Postleitzahl („PLZ“) soll als Attribut von „Ort“ vorkommen. „E-Mail“ soll als leeres Element mit dem Attribut einer E-Mail-Adresse dargestellt werden.

<Auftragskopf>
  <Adresse>
    <Name>
      <Nachname>Mustermann</Nachname>
      <Vorname>Erika</Vorname>
    </Name>
    <Strasse>Heidestraße</Strasse>
    <Hausnummer>17</Hausnummer>
    <Ort PLZ=“81739“>München</Ort>
    <E-Mail href="erika@mustermann.de" />
  </Adresse>
</Auftragskopf>

Das komplette XML-Dokument sieht wie folgt aus:

<?xml version="1.0" encoding="ISO-8859-1"?>
<Auftrag>
  <Auftragskopf>
    <Adresse>
      <Name>
        <Nachname>Mustermann</Nachname>
        <Vorname>Erika</Vorname>
      </Name>
      <Strasse>Heidestraße</Strasse>
      <Hausnummer>17</Hausnummer>
      <Ort PLZ="81739">München</Ort>
      <E-Mail href="erika@mustermann.de" />
    </Adresse>
  </Auftragskopf>
  <Position>
    <Bestellposition>
    <Bezeichnung>Lernheft XML 1</Bezeichnung>
    <Artikelnummer>4711</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
    </Bestellposition>
    <Bestellposition>
    <Bezeichnung>Lernheft XML 2</Bezeichnung>
    <Artikelnummer>4712</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
    </Bestellposition>
  </Position>
</Auftrag>
Frage 2

Ein XML-Dokument „Adresse“ hat folgendes Aussehen:

<?xml version=“1.0“encoding = "156-8859-1“>
<Adresse>
	<Nachname Vorname=“Hugo“>Jedermann</Nachname>
	<E-Mail> jedermann@t-online.de</E-Mail>
	<PLZ>123456</PLZ>
	<Strasse Hausnummer=“17“>Blattweg</Strasse>
	<Ort>Baumstadt</Ort>
	<Adresszusatz>Hinterhof</Adresszusatz>
</Adresse>

a) Erstellen Sie zu diesem Dokument eine DTD „Adresse.dtd“, die folgenden Anforderungen genügt:

  • Die Elemente „Nachname“, „Straße“ und „Ort“ kommen genau einmal vor.
  • Das Element „E-Mail“ ist optional und kann mehrfach vorkommen.
  • Ein „Adresszusatz“ kann einmal oder gar nicht vorkommen.
  • „Vorname“ ist ein Attribut, das vorkommen muss.
<!ELEMENT Adresse (Nachname, E-Mail*, PLZ, Strasse, Ort, Adresszusatz?) >
<!ELEMENT Nachname (#PCDATA) >
<!ELEMENT E-Mail (#PCDATA) >
<!ELEMENT PLZ (#PCDATA) >
<!ELEMENT Strasse (#PCDATA) >
<!ELEMENT Ort (#PCDATA) >
<!ELEMENT Adresszusatz (#PCDATA) >
<!ATTLIST Nachname Vorname CDATA #REQUIRED >
<!ATTLIST Strasse Hausnummer CDATA #IMPLIED >

b) Wie lautet die Ergänzung im XML-Dokument zur Referenzierung der DTD?

<!DOCTYPE Adresse SYSTEM "Adresse.dtd">
Frage 3

Ein XML-Dokument „Position.xml“ hat folgendes Aussehen:

<?xml version=“1.0“?>
<Position>
  <Bestellposition>
    <Bezeichnung>Lernheft XML 1</Bezeichnung>
    <Artikelnummer>4711</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
  </Bestellposition>
  <Bestellposition>
    <Bezeichnung>Lernheft XML 2</Bezeichnung>
    <Artikelnummer>4712</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
  </Bestellposition>
</Position>

Erstellen Sie zu diesem Dokument eine DTD „Position.dtd“, die folgenden Anforderungen genügt:

a) Eine Bestellposition muss mindestens einmal vorkommen.
b) Ein Element „Bezeichnung“ muss nicht, kann aber mehrere Male vorkommen.
c) „Artikelnummer“ und „Artikelanzahl“ kommen jeweils genau einmal vor.

<!ELEMENT Position (Bestellposition+) >
<!ELEMENT Bestellposition (Bezeichnung*, Artikelnummer, Artikelanzahl) >
<!ELEMENT Bezeichnung (#PCDATA) >
<!ELEMENT Artikelnummer (#PCDATA) >
<!ELEMENT Artikelanzahl (#PCDATA) >
Frage 4

a) Gestalten Sie ein CSS-Stylesheet „Positionen.css“ zum XML-Dokument „Positionen.xml“, sodass die Datei ungefähr in Form der Abb.F.1 dargestellt wird. Die Schrifthintergründe sollen blau bzw. gelb erscheinen.

Position {
  background: #fff;
  display: block;
}
Bestellposition{
  font-family: "comic sans MS";
  margin: 10px;
}
Bezeichnung {
  display: block;
  font-size: 14pt;
  font-face: bold;
  text-align: center;
  background: blue;
  color: #fff;
}
Artikelnummer {
  display: block;
  font-size: 12pt;
  text-align: right;
  background: yellow;
  color: #000;
}
Artikelanzahl {
  display: block;
  font-size: 10pt;
  text-align: left;
  background: yellow;
  color: #000;
  margin: 0 0 10px 0;
}

b) Ergänzen Sie das Dokument „Positionen.xml“ um die Referenzierung auf das Stylesheet „Positionen.css“

<?xml version="1.0"?>
<?xml-stylesheet href="Positionen.css" type="text/css"?>
<Position>
  <Bestellposition>
    <Bezeichnung>Lernheft XML 1</Bezeichnung>
    <Artikelnummer>4711</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
  </Bestellposition>
  <Bestellposition>
    <Bezeichnung>Lernheft XML 2</Bezeichnung>
    <Artikelnummer>4712</Artikelnummer>
    <Artikelanzahl>5</Artikelanzahl>
  </Bestellposition>
</Position>
Frage 5

Die Browserdarstellung der Abb.F.2 wurde mit dem XSL-Stylesheet „Positionen.xsl“ erstellt.
a) Ergänzen Sie das Stylesheet „Positionen.xsl“ um die noch fehlenden Anweisungen:

<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
  <html>
    <head>
      <title>ESA 5 - Positionen</title>
    </head>
    <body>
      <xsl:apply-templates />
    </body>
  </html>
  </xsl:template>

  <xsl:template match="Position">
    <h2>Folgende Positionen werden geliefert:</h2>
    <hr />
    <xsl:apply-templates />
  </xsl:template>

  <xsl:template match="Bestellposition">
    <i>Bestellposition:</i><br />
    <b><xsl:value-of select="Bezeichnung" /></b><br />
    <b>Anzahl:</b>
    <xsl:value-of select="Bestellposition" /><br />
    <b>Artikel:</b>
    <xsl:value-of select="Artikelnummer" /><br />
    <hr />
  </xsl:template>
</xsl:stylesheet>

b) Wie referenzieren Sie das Stylesheet im XML-Dokument?

<?xml-stylesheet href="Positionen.xsl" type="text/xsl"?>

c) Erläutern Sie an den Beispielen „Positionen.css“ und „Positionen.xsl“ die unterschiedlichen Darstellungsmöglichkeiten mit Cascading Styles heets (CSS) und mit der Stylessheet-Sprache „XSL“.

CSS kann in Verbindung mit HTML & XML zur Gestaltung von Dokumenten genutzt werden.
XSL ist in der Lage Dokumententypen umzuwandeln. XSL kann z. B. dafür genutzt werden um XML Daten in HTML/CSS Dokumente auf dem Webserver umzuwandeln.
Auf diese Weise ergänzen sich beide Sprache untereinander und können auch zusammen verwendet werden.

Frage 6

a) In welchem Zusammenhang wird folgender Namensraum verwendet?

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version=“1.0“>

Der Namesraum "http://www.w3.org/1999/XSL/Transform" identifiziert Elemente, die als Anleitung in der XSLT-Sprache dienen.

b) Was bewirkt die Angabe dieses Namensraumes?

Diese Spezifikation definiert die Syntax und Semantik von XSLT, die eine Sprache zum Transformieren von XML-Dokumenten in andere XML-Dokumente ist.

Frage 7

In welchem Zusammenhang werden XPath-Ausdrücke verwendet?

XPath-Ausdrücke dienen dazu, „einzelne Teile von XML-Dokumenten zu adressieren“. Dazu werden einfache Hilfsmittel für die Verwendung von Zeichenketten, Zahlen und booleschen Werten bereitgestellt.
XPath navigiert auf der logischen Struktur eines XML-Dokuments und interpretiert diese hierarchische Struktur als einen Baum, bei dem die Elemente des Dokuments mit den Knoten eines Baumes gleichzusetzen sind.
Die Navigation durch die Dokumente wird durch eine Pfadnotation, aus der sich der Name für XPath ableitet, realisiert.