Dokumentation - Steveboo/Wba2_ss13 GitHub Wiki

Dokumentation

Aufgabe 1

Erklären Sie kurz die Begriffe Wohlgeformtheit, Validität und Namespaces im Bezug auf XML und XML-Schema.

Wohlgeformtheit:

Wohlgeformtheit bedeutet im Zusammenhang mit XML, dass die Regeln die für eine XML-Datei gelten eingehalten werden.

Regeln die eingehalten werden müssen sind zum Beispielt:

  1. Jedes XML-Dokument besitzt genau ein Wurzelelement.
  2. Ein Element darf nur ein Attribut des selben Namens haben.
  3. Attributwerte werden in Anführungszeichen geschrieben.
  4. Bei den Element-Tags wird auf Groß- und Kleinschreibung geachtet. Es ist z.B. nicht erlaubt zu verwenden

Quellen: http://de.wikipedia.org/wiki/Extensible_Markup_Language#Wohlgeformtheit , http://de.selfhtml.org/xml/regeln/begriffe.htm

Validität:

Ein XML-Dokument ist dann gültig, wenn es wohlgeformt ist und einen verweis auf eine Grammatik , die das Format der Grammatik einhält.

Quelle:http://de.wikipedia.org/wiki/Extensible_Markup_Language#Gültigkeit

Namespaces:

Namespaces werden in XML-Dokumenten benutzt um in einem einzelnen Dokument mehrere XML-Sprachen zu vermischen. Das Vokabular des XML-Dokuments wird mit Namespaces eindeutig identifiziert.
Quelle:[http://de.wikipedia.org/wiki/Namensraum_(XML)](http://de.wikipedia.org/wiki/Namensraum_(XML)

Aufgabe 2

##a) In der zweiten Aufgabe ging es darum aus einem gegebenen Formular eine XML-Datei zu erstellen und mit einem Beispieldatensatz zu füllen.
In dem gruppe-Element werden alle Teilnehmer einer Gruppe als person angelegt. Da jede Gruppe genau einen Gruppenleiter hat wird dieser mit dem Attribut gruppenleiter="1" als Gruppenleiter festgelegt. Bei jeder weiteren Person wird das Attribut gruppenleiter auf "0" gesetzt damit klar ist, das es sich nicht um einen Gruppenleiter handelt.In dem person-Element werden alle nötigen angaben zu der Person gespeichert.
Ein weiteres Element in der Gruppe ist das Element anmerkung. In diesem wird die Notitz die eine Gruppe hinterlegen kann gespeichert.

##b) Die JSON-Datei ist äquivalent zu der XML-Datei. Sie enthält alle Informationen die auch in der XML-Datei zu finden sind.

Aufgabe 3

a)

Gegeben ist dieses Rezept
Die Daten des Rezeptes wurden dann als XML-Dokument abgebildet.
Das Bild welches in jedem Rezept vorhanden ist, wird in dem Element bild erfasst, es hat das Attribut url in dem der Link zu dem Bild steht.
Die Zutaten werden in dem Element zutaten gesammelt und als zutat mit den Attributen name,menge und einheit gespeichert. Man hätte den Namen, die Menge und die Einheit der Zutat auch als eigene Elemente der Zutat speichern können, aber diese Variante ist übersichtlicher und erzeugt weniger Code.

b)

Die Rezepte unterscheiden sich vor allem im Umfang. Einige haben zum Beispiel nur 3 Zutaten andere 10 und mehr. Außerdem können die Zutaten unterteilt sein, zum Beispiel in Vorteig und Quellstück. Einige Rezepte haben außerdem ein Video, welches die Zubereitung verdeutlicht.

c)

Welche Daten müssen in simple und welche in complex-types abgebildet werden?

Simple-types sind Elemente, die keine Kind-Elemente besitzen und keine Attribute haben.
Complex-types sind Elemente, die Kind-Elemente besitzen und/oder Attribute haben.

Für welche Daten ist die Abbildung in Attributen sinnvoller?

Es gibt keine feste Regel ob eine Information in ein Element geschrieben wird oder als Attribut abgebildet wird. Oft wird aber die Information in XML-Dokumenten in Elementen geschrieben, da Attribute keine geordneten Werte enthalten können. Elementen kann man hingegen mit Unterelementen eine Struktur verleihen die bei größeren Datensätzen unter Umständen einfacher zu erweitern und lesen. In meiner Lösung aber werden viele Informationen, wie z.B. name,menge und einheit in <zutat> als Attribut gespeichert, da es für anfangs einfacher erschien.
Eine Abbildung in Attributen ist sinnvoller wenn z.B. einen type oder eine ID angeben will.

Welche Datentypen müssen für die Elemente definiert werden?

Für Elemente sollten möglichst passende Datentypen definiert werden. Bei Elementen die nur Zahlen enthalten können wäre ein Datentyp sinnvoll der nur Zahlen enthalten kann, wie z.B. int oder float. Ein anderes Beispiel wäre der XML-Datentyp anyURI der bei urls verwendet wird.

Welche Restriktionen müssen definiert werden?

Restriktionen kommen im XML-Schema vor und gegen an welche Werte oder Eingaben erlaubt sind.
Ein einfaches beispiel wäre:

<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="50"/>
</xs:restriction>

In diesem Beispiel sind Zahlen zwischen 0 und 50 erlaubt

Aufgabe 4

Die Aufgabe liegt im GitHub in /WBA2/bin/generated/Einlesen.class
Bei dieser Aufgabe wurde aus dem Schema der dritten Aufgabe mithilfe des JAXB Eclipse Plug-Ins Klassen erstellt. Das Programm soll eine XML-Datei einlesen und in der Konsole wieder ausgeben. Außerdem soll über ein Menü die Auswahl erfolgen ob ein neuer Kommentar hinzugefügt wird oder alle Daten angezeigt werden.
Die XML-Datei wird via Unmarshaller eingelesen. Dann erfolgt die einfache Abfrage ob man mit 1 alles ausgeben lassen will oder mit 2 einen neuen Kommentar hinzufügt. Bei 1 wird jedes Element der XML-Datei nacheinander Ausgegeben. Bei 2 wird man nach seinem Namen gefragt, den man eingeben muss und danach nach dem Kommentar den man Speichern möchte. Falls keine 1 oder 2 eingegeben wird wird ein Fehler ausgegeben. Der Kommentar wird mit dem Aktuellen Datum und einer fortlaufenden Id versehen und via Marshaller in das XML-Dokument gespeichert. #Aufgabe 5 XML und JSON werden als Datenaustauschformat genutzt. XML und JSON können einfach von Computern und Menschen gelesen werden und sind somit gut als Datenaustauschformat geeignet. ###Vorteile

XML JSON
einfach lesbar einfach lesbar
Datum-Zeitformat keine Reservierten Begriffe
Attribute Weniger Code
### Nachteile
XML JSON
viel code kein Datum-Zeitformat
⚠️ **GitHub.com Fallback** ⚠️