Programming lesson
SQL, XML und JSON in der Datenbankpraxis: Fehlerbehebung, Transformation und Validierung (CHC5049)
Lerne, wie du DTD-Fehler erkennst, XML- und JSON-Transformationen mit XSLT durchführst und deine Datenbankprojekte fehlerfrei validierst – praxisnah am Beispiel eines Freizeitparks mit mehreren Shops.
Einleitung: Datenintegration im Freizeitpark – eine typische Herausforderung
Stell dir vor, du arbeitest für einen großen Freizeitpark mit mehreren Souvenirläden. Jeder Shop generiert täglich Hunderte von Transaktionen – von Ticketkäufen bis zu Merchandise-Artikeln. Die Geschäftsleitung möchte diese Daten mit Kundeninformationen kombinieren und an einen externen Analysten übermitteln. Bisher wurden die Daten als separate XML-Dateien bereitgestellt, doch nun soll zusätzlich ein einheitliches JSON-Format eingeführt werden, um die Integration mit modernen Web-Apps und KI-gestützten Analysetools zu erleichtern. Genau hier setzt deine Aufgabe an: Fehler in einer DTD beheben, Transformationen mit XSLT durchführen und die Ergebnisse validieren. Klingt nach einem typischen Datenbank-Coursework? Ist es auch – aber mit echtem Bezug zur Praxis.
1. Fehler in der DTD erkennen und korrigieren
Der erste Schritt in deiner Aufgabe ist die Analyse der Datei transactions_sample.dtd. Oft enthalten solche DTDs typische Fehler wie falsche Elementreihenfolgen, nicht deklarierte Attribute oder fehlende Klammern. Hier ein Beispiel, wie du vorgehen kannst:
- Fehler 1: Ein Element wird ohne vorherige Deklaration referenziert. Lösung: Deklariere das Element vor der ersten Verwendung.
- Fehler 2: Ein Attribut ist in der DTD nicht definiert, wird aber im XML verwendet. Lösung: Füge eine ATTLIST-Deklaration hinzu.
- Fehler 3: Die Klammern bei einer Mixed-Content-Deklaration sind falsch gesetzt. Lösung: Korrigiere die Klammerstruktur nach dem Muster
(#PCDATA|Element)*.
Nachdem du die Fehler markiert und in einem JPEG dokumentiert hast, erstellst du die korrigierte DTD (2_Corrected_sample.dtd). Anschließend validierst du die XML-Datei gegen diese DTD – das Ergebnis sollte fehlerfrei sein (Screenshot 3_Validation_sample.jpeg).
2. XSLT-Transformation zu XML – Schritt für Schritt
Jetzt wird es spannend: Du erstellst ein XSLT-Stylesheet (4_Transformation_to_XML.xsl), das die Kundendaten und Transaktionsdaten aus den beiden XML-Quellen zu einem einheitlichen Dokument zusammenführt. Die Ausgabe soll ein Root-Element Transactions enthalten, das nach Shops gruppiert ist. So könnte die Struktur aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Transactions SYSTEM "6_Structure.dtd">
<Transactions>
<Shop id="SH01" name="Hauptgeschäft">
<Transaction>
<Kunde>Max Mustermann</Kunde>
<Betrag>49.99</Betrag>
<Datum>2026-05-08</Datum>
</Transaction>
</Shop>
</Transactions>Wichtig: In deinem XSLT musst du <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> setzen und die DTD automatisch einbinden. Das erreichst du, indem du im XSLT das <xsl:processing-instruction>-Element verwendest oder die DTD direkt als Teil des Output-Templates einfügst. Vergiss nicht, deinen Code ausführlich zu kommentieren – das zeigt deinem Dozenten, dass du verstehst, was du tust.
3. Die passende DTD für das XML-Output erstellen
Die DTD 6_Structure.dtd muss die Struktur deines Outputs exakt beschreiben. Achte auf logische Namenskonventionen und mindestens ein Attribut (z. B. id für den Shop). Ein Ausschnitt könnte so aussehen:
<!ELEMENT Transactions (Shop+)>
<!ELEMENT Shop (Transaction*)>
<!ATTLIST Shop id ID #REQUIRED name CDATA #IMPLIED>
<!ELEMENT Transaction (Kunde, Betrag, Datum)>
<!ELEMENT Kunde (#PCDATA)>
<!ELEMENT Betrag (#PCDATA)>
<!ELEMENT Datum (#PCDATA)>Nachdem du die DTD erstellt hast, validierst du die Output-XML gegen diese DTD. Der Screenshot 7_Validation_XML.jpeg beweist die Korrektheit.
4. XSLT-Transformation zu JSON – modern und flexibel
JSON ist das bevorzugte Format vieler moderner APIs und Datenbanken. In deinem zweiten XSLT (8_Transformation_to_JSON.xsl) erzeugst du eine JSON-Datei, die dieselben Daten wie das XML-Output enthält, aber in einem strukturierten, leichtgewichtigen Format. Ein Beispiel für die Ausgabe (9_Output.json):
{
"Transactions": {
"Shop": [
{
"@id": "SH01",
"@name": "Hauptgeschäft",
"Transaction": [
{
"Kunde": "Max Mustermann",
"Betrag": 49.99,
"Datum": "2026-05-08"
}
]
}
]
}
}Beachte: JSON erfordert korrekte Anführungszeichen und Kommasetzung. Verwende in XSLT die Methode text und baue den JSON-String manuell oder mit Hilfe von Templates. Auch hier sind Kommentare im XSLT Pflicht. Nach der Transformation validierst du die JSON-Datei mit einem Online-Validator (z. B. jsonlint.com) und speicherst den Screenshot als 10_Validation_json.jpeg.
5. Tipps für die Abgabe und Vermeidung von Fehlern
Die Abgabe erfolgt als ZIP-Datei mit exakten Dateinamen. Achte besonders auf Groß-/Kleinschreibung und Dateiendungen. Ein häufiger Fehler ist die falsche Benennung der JPEG-Dateien – sie müssen genau 1_DTD_sample_Errors.jpeg etc. heißen. Teste deine Transformationen gründlich: Verwende verschiedene XML-Eingaben, um sicherzustellen, dass dein XSLT robust ist. Denke daran, dass die DTD für das XML-Output automatisch referenziert werden muss – nicht manuell hinzufügen!
Fazit: Vom DTD-Fehler zur validen JSON-Datei
Mit dieser Anleitung hast du einen klaren Fahrplan für dein CHC5049-Coursework. Du hast gelernt, wie man DTD-Fehler erkennt, XSLT-Transformationen für XML und JSON schreibt und die Ergebnisse validiert. Diese Fähigkeiten sind nicht nur für die Uni relevant, sondern auch in der Praxis gefragt – egal ob du Daten für eine KI-Analyse aufbereitest oder eine moderne E-Commerce-Plattform mit JSON-Schnittstellen betreibst. Viel Erfolg bei deiner Abgabe!