4. Aufgabenstellung: SQL inkl. XML & DTD
Diese Aufgabenstellung beschäftigt sich wieder mit der Lehrdatenbank des Buchhandels. Bei dieser Aufgabenstellung geht es um die Verbindung von SQL mit XML und DTD.

Aufgrund meiner Matrikelnummer (0456032) und somit der Endziffer 2, beschäftige ich mich mit der 2. Aufgabe: Erfassung eines Verlages.

Zuerst werde ich zur Bewältigung der Aufgabe die SQL-Abfrage definieren bzw. den Ausgangspunkt um dann anschließend die XML-Datei und folglich die DTD-Erweiterung erstellen zu können. Hierbei sei anzumerken, dass ein Verlag in der Lehrdatenbank erfasst werden soll, aber kein bestehender.


1. SQL-Abfrage:
Für die folgenden Schritte gehe ich von der folgenden allgemeinen SQL-Abfrage aus bzw. ziehe ich für einen neuen Verlag den Linde Verlag in Wien aus. Bei dieser Abfrage ist ersichtlich, dass der Linde Verlag noch kein Bestandteil der Datenbank ist.

SELECT Verlag.Kurzbezeichnung, Verlag.Name, Verlag.PLZ, Verlag.Strasse, Verlag.Kundennummer
FROM Verlag
ORDER BY Verlag.Name

Anschrift:
LINDE VERLAG WIEN Ges.m.b.H.
Scheydgasse 24
1210 Wien
Kurzbezeichnung: lvw
Kundenummer: 10320


2. XML-Datei:
Bevor die XML-Datei bzw. die hierfür zu erstellende Sprache erwähnt wird, werden noch kurz die Voraussetzungen von XML, die es zu erfüllen gilt, erwähnt:

1. XML Deklaration muss immer vorhanden sein
2. Wurzelelement muss vorhanden sein
3. Richtige Schreibweise gilt es zu berücksichtigen
4. Attributwerte müssen im Gegensatz zu HTML unter Anführungszeichen gesetzt werden
5. Leere Elemente darf es nicht geben, d.h. ein schließender Tag muss immer vorhanden sein
6. Elementnamen gilt es zu berücksichtigen
7. Groß- und Kleinschreibung berücksichtigen
8. Kommentare sind möglich (Quelle: Vgl. XML-Einführung).

Folgender XML-Befehl wird für den Linde Verlag herangezogen:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Verlag>
<Kurzbezeichnung>lvw</Kurzbezeichnung>
<Name>LINDE VERLAG WIEN Ges.m.b.H.</Name>
<Kundennummer>10320</Kundennummer>
<Strasse>Scheydgasse 24</Strasse>
<Plz>1210</Plz>
</Verlag>

Die Zahl 1.0 sagt aus, um welche XML-Version es sich handelt. Encoding wird verwendet um den Zeichensatz, mit dem das Dokument behandelt wird, zu setzen. In diesem Fall steht "ISO-8859-1" für den ISO-Zeichensatz für westeuropäische Sprachen.

Die damit verbundene XML-Datei kann folglich aufgerufen werden:
Neuer_Verlag

3. DTD-Erweiterung:
Auch wenn zahlreiche Regeln (siehe unter 2. XML-Datei: Aufzählungspunkte 1.-8.) zu berücksichtigen sind, so ist das Dokument noch nicht gültig. Ein Dokument gilt dann als gültig, wenn die verwendeten Elemente definiert sind. Weiters muss das XML auch wissen um welche Attribute bzw. welchen Inhalt es bei den Elementen geht. Hierfür verwendet man das oben bereits erwähnte DTD (Document Type Definition).

Grundsätzlich wird zwischen einer internen und einer externen (ausgelagerten) DTD unterschieden. Ausgehend von der Aufgabenstellung werde ich eine interne DTD verwenden, da diese bei kleinen Dokumenten angewandt wird sowie steht die interne DTD im selben XML-Dokument.

In Bezug auf das vorhergehende Beispiel ergibt sich folgender DTD-Befehl bzw. Schreibweise:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE Verlag [
<!ELEMENT Verlag (Kurzbezeichnung, Name, Kundennummer, Strasse, Plz)>
<!ELEMENT Kurzbezeichnung (#PCDATA)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Kundennummer (#PCDATA)>
<!ELEMENT Strasse (#PCDATA)>
<!ELEMENT Plz (#PCDATA)>
<!ELEMENT Kurzbezeichnung (#PCDATA)>
]>

<Verlag>
<Kurzbezeichnung>lvw</Kurzbezeichnung>
<Name>LINDE VERLAG WIEN Ges.m.b.H.</Name>
<Kundennummer>10320</Kundennummer>
<Strasse>Scheydgasse 24</Strasse>
<Plz>1210</Plz>
</Verlag>

Die DTD reicht von <!DOCTYPE Verlag[ bis ]>. Dabei ist ersichtlich, dass der Name der DTD Verlag ist. Ein Element wird mit <!ELEMENT > beschrieben. Das Wurzelelement muss dabei immer als erstes definiert werden.

Weiters ist es wichtig, dass die richtige Reihenfolge der einzelnen Definitionen eingehalten wird. Die weiteren Elemente des Wurzelelementes werden von einer runde Klammer umschlossen und mittels Beistrichen getrennt. Mit #PCDATA erreicht man, dass der Inhalt des Elementes jeglicher Text oder Code sein darf, allerdings können bzw. dürfen hierbei keine weiteren Unterelemente eingefügt werden.

Die DTD-Erweiterung kann folglich aufgerufen werden:
Neuer_Verlag