Erstellung XML-Dokument und DTD (4. Hausübung aus IV 2)
Aufgabe:
Gehen Sie von der Datenstrukur der Lehrdatenbank und der Beschreibung der Tabellen aus. Wählen Sie aus der Liste der nachfolgend angeführten Geschäftsfälle jenen aus, dessen Rangnummer mit der Endziffer Ihrer Matrikelnummer
(0556347) übereinstimmt:
1. Einen Kunden erfassen.
2. Einen Verlag erfassen.
3. Ein Buch erfassen.
4. Einen Auftrag mit 2 Positionen erfassen.
5. Einen Kunden (beliebig wählen) und seine Aufträge auflisten.
6. Einen Auftrag (beliebig wählen) und seine Positionen auflisten.
7. Eine PLZ (beliebig wählen) und die dort ansäßigen Kunden (maximal 10, sortiert nach Kundennummer) auflisten.
8. Eine PLZ (beliebig wählen) und die dort ansäßigen Verlage auflisten.
9. Einen Verlag (beliebig wählen) und seine Bücher (maximal 10, sortiert nach Buchnummern) auflisten.
10. Ein Buch (beliebig wählen) und die Aufträge in denen es enthalten ist (maximal 10, sortiert nach Auftragsnummern) auflisten.
Erstellen Sie für den Ihnen zugeordneten Geschäftsfall ein XML-Dokument, welches die zu erfassenden bzw. ausgegebenen Daten enthält. Ergänzen Sie das XML-Dokument um die zugehörige DTD.
Bei den Geschäftsfällen 1 bis 4, die eine Datenerfassung darstellen, sind konforme Daten zu generieren. D.h. diese dürfen noch nicht in der Datenbank vorhanden sein und müssen den verwendeten Datenformaten entsprechen. Prüfen Sie mit einer Abfrage, ob die Bedinungen erfüllt sind.
Bei den Geschäftsfällen 5 bis 10, die eine Ausgabe darstellen, müssen konkrete Werte der Datenbank verwendet werden. Ermitteln Sie vor der Formulierung des XML Dokumentes die Daten mit einer entsprechenden Abfrage und bauen Sie das Ergebnis in das XML Dokument ein.
Dokumentieren Sie die Schritte und das Ergebnis in Ihrem Lernblog.
Lösung:
Punkt 7)
Zuerst habe ich folgende Abfrage auf SQL.IDV.EDU eingegeben, um herauszufinden, welche Postleitzahlen maximal 10 Kunden aufweisen:
SELECT Kunde.Nr, Kunde.Vorname, Kunde.Nachname, PLZ.Plz, COUNT(Kunde.Nr) FROM Kunde, PLZ WHERE Kunde.Plz=PLZ.Plz GROUP BY PLZ.Plz HAVING COUNT(Kunde.Nr)<="10" ORDER BY Kunde.Nr
Anschließend habe ich mir aus der Ergebnistabelle eine beliebige Postleitzahl ausgewählt: 3102 (weist genau 10 Kunden auf). Nach dieser Postleitzahlt habe ich dann folgende
Abfrage generiert:
SELECT Kunde.Nr, Kunde.Vorname, Kunde.Nachname, PLZ.Plz FROM Kunde, PLZ WHERE Kunde.Plz=PLZ.Plz AND PLZ.Plz="3102" ORDER BY Kunde.Nr
Die
Ergebnistabelle sieht folgendermaßen aus:
Jetzt sollen ein
XML-Dokument erstellen, welches die ausgegebenen Daten enthält. Ehrlich gesagt, fällt mir diese Aufgabe sehr schwer, weil ich eigentlich nur Bahnhof verstehe, aber ich habs jedenfalls probiert eine Lösung zu finden.
Kunden mit der Postleitzahl '3102' |
|
XML-Datei ohne DTD:
xml ohne dtd (xml, 1 KB)
Tja und nun versuch ich noch das XML-Dokument um die zugehörige
DTD zu ergänzen. Dazu hab ich mich zuerst einmal informiert was das eigentlich bedeutet ;)
Die verwendeten Elemente müssen definiert sein. XML bzw. der Parser muss "wissen" was für Elemente verwendet werden, und welchen Inhalt bzw. welche Attribute diese Elemente haben können.
Diese Angaben werden in der DTD (Document Type Definition) gemacht.
(vgl.
http://www.devmag.net/xml/xml_einfuehrung.htm)
Und so siehts aus:
<!DOCTYPE PLZ [
<!ELEMENT Kunde (Nr, Vorname, Nachname, Plz)>
<!ELEMENT Nr (#PCDATA)>
<!ELEMENT Vorname (#PCDATA)>
<!ELEMENT Nachname (#PCDATA)>
<!ELEMENT Plz (#PCDATA)>
]>
Hier die XML-Datei inklusive DTD:
xml mit dtd (xml, 2 KB)
Bitte um Verständnis, wenns totaler Blödsinn ist und ihr euch fragt "Wie kommt sie nur auf sowas???".
(Ich bin wirklich blutige Anfängerin!!!) ;)