Dokumentation - Steveboo/Wba2_ss13 GitHub Wiki
Erklären Sie kurz die Begriffe Wohlgeformtheit, Validität und Namespaces im Bezug auf XML und XML-Schema.
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:
- Jedes XML-Dokument besitzt genau ein Wurzelelement.
- Ein Element darf nur ein Attribut des selben Namens haben.
- Attributwerte werden in Anführungszeichen geschrieben.
- 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
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 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)
##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.
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.
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.
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.
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.
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.
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
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 |
XML | JSON |
---|---|
viel code | kein Datum-Zeitformat |