Übungsaufgaben zu XML: Wohlgeformtheit, Gültigkeit, DTD und XSD
https://bildung.social/@oerinformatik/
https://oer-informatik.de/xml-uebungsaufgaben
XML, Wohlgeformtheit, Gültigkeit, DTD, XML Schema, XSD, Validierung, Datenaustausch, Übungsaufgaben, Prüfungsvorbereitung
tl/dr; (ca. 41 min Lese- und Bearbeitungszeit): Eine umfangreiche Übungsaufgabe rund um ein elektronisches Lieferavis: PDF, CSV und XML für den Import vergleichen, eine externe DTD einbinden, eine Parser-Fehlermeldung deuten, erst die Wohlgeformtheits- und dann die Gültigkeitsfehler eines Dokuments beheben, Daten aus einer E-Mail als XML erfassen, eine DTD erweitern, XSD-Deklarationen schreiben und ein gültiges Lieferavis fachlich gegen die Auftragsdaten prüfen. Alle Lösungen sind ausgeblendet und mit Punkteverteilung versehen [AI-Assisted]. (Zuletzt geändert am 28.10.2026)
Diese Übungsaufgaben gehören zur Artikelserie über XML: Einstieg in XML und Wohlgeformtheit / Document Type Definition (DTD) / XML Schema: Struktur / XML Schema: Datentypen. Ein Praxisbeispiel für XML im Datenaustausch findest Du im Artikel Elektronische Rechnungen (E-Rechnung).
Hinweise zur Bearbeitung: Als FIA musst Du zur Teil-2-Prüfung Aufgaben auf Kernkompetenz-Ebene lösen können, das ist Aufgabe 2.1. Achte auf die Operatoren: „Nennen“ verlangt Stichworte, „beschreiben“ und „erläutern“ verlangen ganze Aussagen mit Begründung oder Beispiel, „angeben“ verlangt die konkrete Fundstelle bzw. Angabe. Löse die Teilaufgaben ohne Rechner und ohne Validator – die Fehler sollst Du mit bloßem Auge finden. Schreib Deine Lösung zuerst vollständig auf, bevor Du die Beispiellösung aufklappst.
Du möchtest eigene Aufgaben zum Üben von einem KI-Sprachmodell generieren lassen?
Kopiere den Text in ein KI-Sprachmodell Deiner Wahl und passe Kompetenzstufe, Anzahl, Bearbeitungszeit und Szenario bei Bedarf an. Wie die Aufgaben aufgebaut sind, beschreibt der Artikel Wie sind die Aufgaben aufgebaut?. Prüfe die Ergebnisse mit dem Lehrartikel: KI-Sprachmodelle machen Fehler.
Erstelle neue Übungsaufgaben zum Thema „XML: Wohlgeformtheit,
Gültigkeit, DTD und XSD“.
Bauplan: Halte Dich an Aufbau, Kompetenzstufen, Operatoren,
Anforderungsbereiche, Punkte und Zeitschätzung, die im Artikel
https://oer-informatik.de/aufgaben-aufbau beschrieben sind.
Fachliche Grundlage:
- https://oer-informatik.de/xml-einstieg
- https://oer-informatik.de/xml-dtd
- https://oer-informatik.de/xml-schema-struktur
- https://oer-informatik.de/xml-schema-datentypen
- https://oer-informatik.de/e-rechnung
- Stilbeispiel: https://oer-informatik.de/xml-uebungsaufgaben
Die Aufgaben sollen Inhalte zu diesen Schlagwörtern abdecken:
- XML
- Wohlgeformtheit
- Gültigkeit
- DTD
- XML Schema
- XSD
- Validierung
- Datenaustausch
Kompetenzstufe: Kernkompetenz (alternativ: Basiskompetenz, Profilkompetenz, Expertise)
Anzahl: 1 Aufgabe mit Teilaufgaben
Bearbeitungszeit in Minuten ca.: <5 bis 30 min>
Szenario: eines der Szenarien aus dem Bauplan
Vorgehen:
1. Lies zuerst die verlinkten Artikel. Kannst Du keine Webseiten
abrufen, sag mir das, statt zu raten.
2. Steht bei einer Angabe noch ein Platzhalter in <…>, frag mich
zuerst danach. Richte Punkte und Zahl der Teilaufgaben nach der
Bearbeitungszeit (ca. 0,9 min je Punkt).
3. Gib je Aufgabe Titel mit Kompetenzstufe, Ausgangssituation und
Teilaufgaben mit Operator und Punktzahl aus, dazu die geschätzte
Bearbeitungszeit.
4. Gib die Beispiellösungen mit Punkteverteilung erst aus, wenn ich
danach frage.
Aufgabe 2.1: Elektronische Lieferavise für Rahmen nach Maß (Kernkompetenz)
Du bist Auszubildende*r im Entwicklungsteam der CSB-Rad GmbH in Bielefeld. CSB-Rad verkauft Fahrräder und Komponenten über einen Onlineshop. Rahmen nach Maß lässt das Unternehmen bei der Rahmenwerk OWL GmbH in Gütersloh fertigen. Bisher liegt jeder Rahmenlieferung ein Lieferschein als PDF bei. Werkstattleiter Bastian Ludwig tippt daraus die Auftragsnummer und die RFID-Kennung jedes Rahmens von Hand in das Shop-Backend ab, damit der zugehörige Fertigungsauftrag auf „geliefert“ gesetzt wird.
Ole Petersen, Projektleiter Digitalisierung bei Rahmenwerk OWL, bietet an, dass das Fertigungssystem (MES) künftig zu jeder Lieferung zusätzlich ein elektronisches Lieferavis als XML-Datei erzeugt. Cem Sarıkaya, Geschäftsführer Technik und IT bei CSB-Rad, beauftragt Dich, den automatischen Import in das Shop-Backend vorzubereiten.
a) Bastian Ludwig ist skeptisch: „Wenn schon eine Datei, dann doch eine CSV-Tabelle – oder wir lassen es beim PDF.“ Vergleiche PDF-Lieferschein, CSV-Datei und XML-Lieferavis in einer Tabelle nach den drei Gesichtspunkten Werte maschinell zuordnen, verschachtelte und optionale Angaben abbilden und vor dem Import gegen eine Vereinbarung prüfen. Leite daraus eine Empfehlung für CSB-Rad ab. (5 Punkte)
Je richtig ausgefüllter Zeile 1 Punkt:
| Gesichtspunkt | PDF-Lieferschein | CSV-Datei | XML-Lieferavis |
|---|---|---|---|
| Werte maschinell zuordnen | kaum: Text steht nach Layout auf der Seite, das Programm muss raten, welche Zahl was bedeutet | ja, über die Spaltenposition bzw. die Kopfzeile | ja, jeder Wert steht in einem benannten Element oder Attribut |
| verschachtelte und optionale Angaben | nur optisch (Einrückung, Tabellen im Layout) | nein: eine flache Tabelle; optionale Teile wie Gravur oder Hinweis bleiben leere Spalten, mehrere Rahmen je Lieferung bräuchten Wiederholungen | ja: Baumstruktur, optionale Elemente lassen sich weglassen |
| gegen eine Vereinbarung prüfen | nein | nur selbst programmiert (Spaltenzahl, Werte) | ja, standardisiert mit DTD oder XML Schema |
Empfehlung (2 Punkte): XML, weil das Lieferavis hierarchisch aufgebaut ist (Lieferavis → Lieferungen → Rahmen mit Farbe, optionaler Gravur und Hinweisen) und weil die Datei vor dem Import automatisch geprüft werden kann. Dass CSV kleiner ist, spielt bei wenigen Rahmen je Lieferung keine Rolle.
b) Ole Petersen schickt Dir die vereinbarte DTD lieferavis.dtd:
<!ELEMENT lieferavis (absender, empfaenger, lieferung+)>
<!ATTLIST lieferavis
nr ID #REQUIRED
datum CDATA #REQUIRED>
<!ELEMENT absender (#PCDATA)>
<!ELEMENT empfaenger (#PCDATA)>
<!ELEMENT lieferung (auftrag, rahmen, gewicht_kg, hinweis?)>
<!ATTLIST lieferung
pos CDATA #REQUIRED
status (vollstaendig | teillieferung) "vollstaendig">
<!ELEMENT auftrag (#PCDATA)>
<!ELEMENT rahmen (form, hoehe_cm, farbe, gravur?)>
<!ATTLIST rahmen rfid CDATA #REQUIRED>
<!ELEMENT form (#PCDATA)>
<!ELEMENT hoehe_cm (#PCDATA)>
<!ELEMENT farbe (#PCDATA)>
<!ATTLIST farbe oberflaeche (glanz | matt | strukturiert) #REQUIRED>
<!ELEMENT gravur (#PCDATA)>
<!ELEMENT gewicht_kg (#PCDATA)>
<!ELEMENT hinweis (#PCDATA)>Dazu kommt ein erstes Lieferavis, das ein Kollege bei Rahmenwerk OWL von Hand geschrieben hat (Zeilennummern zur Orientierung):
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <lieferavis nr="LA-2026-0187" datum="2026-10-30">
3 <absender>Rahmenwerk OWL GmbH, Gütersloh</absender>
4 <empfaenger>CSB-Rad GmbH, Bielefeld</empfaenger>
5 <lieferung pos=1>
6 <auftrag>1041</auftrag>
7 <rahmen rfid="E200 3412 0126 0041">
8 <form>Lastenrad-Long-John</form>
9 <hoehe_cm>52</hoehe_cm>
10 <farbe oberflaeche="matt">RAL 6018</farbe>
11 <gravur>Okafor-Schmidt</Gravur>
12 </rahmen>
13 <gewicht_kg>9.8</gewicht_kg>
14 <hinweis>Beschichtung geprüft & freigegeben</hinweis>
15 </lieferung>
16 <lieferung pos="2" status="vollstaendig" pos="2">
17 <rahmen>
18 <form>Trapez</form>
19 <hoehe_cm>50</hoehe_cm>
20 <farbe oberflaeche="Struktur">RAL 5010</farbe>
21 </rahmen>
22 <gewicht_kg>2.4</gewicht_kg>
23 <hinweis>Sattelstütze 27,2 mm liegt bei</hinweis>
24 <hinweis>Steuersatz vormontiert</hinweis>
25 </lieferung>
26 </lieferavis>ba) Das Lieferavis verweist noch nicht auf die DTD. Entscheide, ob die DTD in jedes Lieferavis eingebettet (intern) oder als eigene Datei referenziert (extern) werden soll, begründe Deine Wahl für diese Schnittstelle und gib die Zeile an, die dafür hinter dem Prolog eingefügt wird. (2 Punkte)
Extern (1 Punkt): Rahmenwerk OWL erzeugt viele Lieferavise nach denselben Regeln. Eine eigene Datei lieferavis.dtd wird an einer Stelle gepflegt; ändert sich die Vereinbarung, müssen nicht alle erzeugten Dateien angepasst werden, und die einzelnen Lieferavise bleiben kurz. Eine interne DTD lohnt sich eher für Einzeldokumente oder Tests.
Zeile (1 Punkt): <!DOCTYPE lieferavis SYSTEM "lieferavis.dtd"> – der Name hinter DOCTYPE muss dem Wurzelelement entsprechen.
bb) Das Shop-Backend liest Lieferavise mit dem Python-Modul xml.etree.ElementTree. Beim Testimport bricht es mit genau einer Meldung ab:
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 5, column 19
Erkläre, warum nur diese eine Meldung erscheint, obwohl das Dokument mehrere Fehler enthält, und was die Meldung darüber aussagt, ob das Dokument der DTD entspricht. (3 Punkte)
In Zeile 5 fehlen die Anführungszeichen um den Attributwert (
pos=1). Damit verletzt das Dokument die Syntaxregeln von XML, es ist nicht wohlgeformt (1 Punkt).Ein Verstoß gegen die Wohlgeformtheit ist nach dem XML-Standard ein fataler Fehler: Ab dieser Stelle ist die Baumstruktur nicht mehr eindeutig, der Parser liefert kein Dokument und bricht ab. Weitere Fehler werden erst nach der Korrektur sichtbar (1 Punkt).
Über die DTD sagt die Meldung nichts:
ElementTreevalidiert ohnehin nicht, und auch ein validierender Parser prüft die Gültigkeit (Übereinstimmung mit DTD oder Schema) erst, wenn das Dokument wohlgeformt ist (1 Punkt).
bc) Neben Zeile 5 enthält das Lieferavis weitere Fehler, die schon ohne Blick in die DTD auffallen. Gib jeden dieser Fehler mit Zeilennummer an und schreibe die betroffene Zeile korrigiert auf. (3 Punkte)
Je Fehler mit richtiger Korrektur 1 Punkt:
Zeile 11: Endtag in anderer Schreibweise als das Starttag (XML unterscheidet Groß- und Kleinschreibung):
<gravur>Okafor-Schmidt</gravur>Zeile 14:
&leitet in XML eine Entitätsreferenz ein und muss im Text maskiert werden:<hinweis>Beschichtung geprüft & freigegeben</hinweis>Zeile 16: Das Attribut
possteht zweimal im selben Starttag:<lieferung pos="2" status="vollstaendig">(das Attributstatusdarf auch entfallen,vollstaendigist der Defaultwert).
Zusammen mit pos="1" in Zeile 5 ist das Dokument danach wohlgeformt.
bd) Nach Deinen Korrekturen ist das Dokument wohlgeformt. Jetzt prüfst Du es gegen die DTD. Gib alle Abweichungen von der DTD an, die der Validator in der zweiten Lieferung findet, und beschreibe jeweils, wie sie behoben werden. (8 Punkte)
Je Abweichung 2 Punkte (1 Punkt Abweichung mit Bezug zur DTD, 1 Punkt Behebung):
Zeile 16/17 – Pflichtelement fehlt: Das Inhaltsmodell
(auftrag, rahmen, gewicht_kg, hinweis?)verlangtauftragals erstes Kindelement. Behebung:<auftrag>…</auftrag>vorrahmeneinfügen; die Auftragsnummer muss bei Rahmenwerk OWL erfragt werden (hier1047).Zeile 17 – Pflichtattribut fehlt:
rfidist fürrahmen#REQUIRED. Behebung: RFID-Kennung des Rahmens eintragen, z. B.<rahmen rfid="E200 3412 0126 0047">.Zeile 20 – unzulässiger Attributwert:
Strukturgehört nicht zur Aufzählung(glanz | matt | strukturiert). Behebung:oberflaeche="strukturiert".Zeile 23/24 – Element zu oft:
hinweis?erlaubt höchstens einen Hinweis je Lieferung. Behebung: beide Texte in einemhinweiszusammenfassen oder in der DTDhinweis*vereinbaren.
Zur Kontrolle die Ausgabe von xmllint --noout --dtdvalid lieferavis.dtd für das wohlgeformte, aber noch ungültige Dokument:
lieferavis.xml:16: element lieferung: validity error : Element lieferung content does not follow the DTD, expecting (auftrag , rahmen , gewicht_kg , hinweis?), got (rahmen gewicht_kg hinweis hinweis )
lieferavis.xml:17: element rahmen: validity error : Element rahmen does not carry attribute rfid
lieferavis.xml:20: element farbe: validity error : Value "Struktur" for attribute oberflaeche of farbe is not among the enumerated set
Die erste Meldung fasst zwei Abweichungen zusammen: Der Validator vergleicht die tatsächliche Folge der Kindelemente als Ganzes mit dem Inhaltsmodell. Die Zeilennummer bezieht sich auf das Endtag, an dem die Folge feststeht.
c) Ole Petersen schreibt Dir zur selben Lieferung noch eine dritte Position per E-Mail: „Position 3 ist der schwarze Diamantrahmen in 56 cm zum MES-Auftrag 1052, Hochglanz, ohne Gravur, RFID E200 3412 0126 0052, 2,3 kg. Die Steckachse fehlt noch und kommt mit der nächsten Lieferung, bitte als Teillieferung buchen. Farbcode RAL 9005.“
Ergänze das Lieferavis um diese Position als lieferung-Element, sodass es der DTD entspricht. (5 Punkte)
<lieferung pos="3" status="teillieferung">
<auftrag>1052</auftrag>
<rahmen rfid="E200 3412 0126 0052">
<form>Diamant</form>
<hoehe_cm>56</hoehe_cm>
<farbe oberflaeche="glanz">RAL 9005</farbe>
</rahmen>
<gewicht_kg>2.3</gewicht_kg>
<hinweis>Steckachse wird nachgeliefert</hinweis>
</lieferung>Bewertung (5 Punkte):
lieferungmitpos="3"undstatus="teillieferung"(Wert aus der Aufzählung, also klein geschrieben) – 1 Punkt,auftrag,rahmen,gewicht_kg,hinweisin der Reihenfolge der DTD – 1 Punkt,RFID-Kennung als Attribut von
rahmen, nicht als Element – 1 Punkt,form,hoehe_cm,farbein dieser Reihenfolge, keingravur-Element – 1 Punkt,„Hochglanz“ als erlaubter Wert
oberflaeche="glanz"übersetzt, Zahlen ohne Einheit (die Einheit steckt im Elementnamen) – 1 Punkt.
Die DTD prüft den Inhalt der Elemente nicht; für die Weiterverarbeitung ist der Dezimalpunkt (2.3) sinnvoll, 2,3 ist als Antwort trotzdem zu akzeptieren. Das vollständige, korrigierte Lieferavis mit drei Positionen ist gegen die DTD gültig (geprüft mit xmllint --noout --valid).
d) Cem Sarıkaya und Ole Petersen vereinbaren zwei Erweiterungen des Lieferavis:
Zu jeder Lieferung können beliebig viele Fotos der Endkontrolle angegeben werden, auch keines. Ein Foto wird als leeres Element
fotoam Ende der Lieferung angegeben und muss im Attributdateiden Dateinamen enthalten.Beim Element
gewicht_kgsoll das Attributartangeben, ob es sich um das Netto- (Rahmen ohne Verpackung) oder das Bruttogewicht handelt. Andere Werte sind nicht erlaubt; fehlt das Attribut, giltnetto.
Ergänze bzw. ändere die DTD aus Teilaufgabe b) so, dass sie beide Erweiterungen abbildet. Gib nur die geänderten und neuen Zeilen an. (4 Punkte)
<!ELEMENT lieferung (auftrag, rahmen, gewicht_kg, hinweis?, foto*)>
<!ELEMENT foto EMPTY>
<!ATTLIST foto datei CDATA #REQUIRED>
<!ATTLIST gewicht_kg art (netto | brutto) "netto">Je Zeile 1 Punkt: foto* am Ende des Inhaltsmodells von lieferung (keinmal oder beliebig oft), foto als EMPTY, Pflichtattribut datei mit #REQUIRED, Aufzählung (netto | brutto) mit dem Defaultwert "netto" (ohne #IMPLIED, sonst gäbe es keinen Defaultwert).
Ein passendes Element sieht z. B. so aus: <foto datei="1052-endkontrolle-1.jpg"/>. Die erweiterte DTD wurde mit einem Testdokument geprüft (xmllint --noout --valid).
e) Für die nächste Version der Schnittstelle schlägt Ole Petersen vor, die DTD durch ein XML Schema (lieferavis.xsd) zu ersetzen.
ea) Nenne zwei Vorteile von XML Schema gegenüber einer DTD, die für das Lieferavis nützlich sind. (2 Punkte)
Je Vorteil 1 Punkt, z. B.:
Datentypen und Wertebereiche:
hoehe_cmals ganze Zahl von 40 bis 64,gewicht_kgals Dezimalzahl,datumals Datum – eine DTD erlaubt überall beliebigen Text.Genaue Häufigkeiten mit
minOccurs/maxOccurs(z. B. höchstens 20 Lieferungen), statt nur?,*,+.Das Schema ist selbst XML und lässt sich mit denselben Werkzeugen bearbeiten und prüfen.
Namensräume und wiederverwendbare Typen (z. B. ein gemeinsamer Typ für Rahmen in mehreren Schnittstellen).
eb) Erstelle die XSD-Deklaration für das Element hoehe_cm. Es soll nur ganze Zahlen von 40 bis 64 (jeweils einschließlich) zulassen. Das Präfix xs ist im Schema für den Namensraum http://www.w3.org/2001/XMLSchema deklariert. (4 Punkte)
<xs:element name="hoehe_cm">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="40"/>
<xs:maxInclusive value="64"/>
</xs:restriction>
</xs:simpleType>
</xs:element>Je 1 Punkt: Element mit Namen hoehe_cm, eigener simpleType mit restriction, Basistyp xs:integer (auch xs:positiveInteger o. Ä.), Unter- und Obergrenze mit minInclusive/maxInclusive (gleichwertig: minExclusive value="39"/maxExclusive value="65"). Ein Wert wie 66 wird damit bei der Validierung abgelehnt.
ec) Gib an, wie in der XSD festgelegt wird, dass ein Lieferavis mindestens eine und höchstens 20 Lieferungen enthält. (2 Punkte)
Über die Attribute minOccurs und maxOccurs an der Deklaration des Elements lieferung innerhalb der Sequenz von lieferavis (je 1 Punkt):
<xs:element name="lieferung" minOccurs="1" maxOccurs="20">
<!-- ... Typ der Lieferung ... -->
</xs:element>minOccurs="1" ist der Standardwert und darf auch weggelassen werden. In einer DTD ließe sich nur lieferung+ (eine bis beliebig viele) ausdrücken.
f) Die neue Schnittstellenversion ist eingeführt, das Shop-Backend validiert jedes Lieferavis gegen lieferavis.xsd. Cem Sarıkaya schlägt vor: „Was gegen das XSD validiert, buchen wir automatisch auf ‚geliefert‘.“ Am 13.11.2026 kommt das folgende Lieferavis an; es validiert fehlerfrei:
<?xml version="1.0" encoding="UTF-8"?>
<lieferavis nr="LA-2026-0193" datum="2026-11-13"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="lieferavis.xsd">
<absender>Rahmenwerk OWL GmbH, Gütersloh</absender>
<empfaenger>CSB-Rad GmbH, Bielefeld</empfaenger>
<lieferung pos="1">
<auftrag>1058</auftrag>
<rahmen rfid="E200 3412 0126 0058">
<form>Tiefeinsteiger</form>
<hoehe_cm>46</hoehe_cm>
<farbe oberflaeche="matt">RAL 7016</farbe>
</rahmen>
<gewicht_kg>2.6</gewicht_kg>
</lieferung>
<lieferung pos="2">
<auftrag>1061</auftrag>
<rahmen rfid="E200 3412 0126 0061">
<form>Diamant</form>
<hoehe_cm>60</hoehe_cm>
<farbe oberflaeche="glanz">RAL 3020</farbe>
</rahmen>
<gewicht_kg>2.5</gewicht_kg>
</lieferung>
</lieferavis>Im Shop-Backend stehen zu diesen Aufträgen folgende Daten:
| auftrag | rahmenform | hoehe_cm | farbe | status |
|---|---|---|---|---|
| 1058 | Tiefeinsteiger | 46 | RAL 7016 | storniert |
| 1061 | Diamant | 56 | RAL 3020 | in Fertigung |
fa) Untersuche, ob dieses Lieferavis automatisch gebucht werden darf, und beurteile damit Cems Vorschlag. (4 Punkte)
Abweichungen (je 1 Punkt): Auftrag 1058 ist storniert, trotzdem wird ein Rahmen dazu geliefert – entweder kam die Stornierung bei Rahmenwerk OWL nicht an, oder die Auftragsnummer ist falsch. Bei Auftrag 1061 ist ein 56-cm-Rahmen bestellt, geliefert wird laut Lieferavis einer mit 60 cm.
Beurteilung (2 Punkte): Das Lieferavis darf so nicht gebucht werden, Cems Vorschlag reicht nicht aus. Die Schemavalidierung prüft Aufbau, Datentypen und Wertebereiche jedes einzelnen Werts –
60ist eine erlaubte Rahmenhöhe,1058eine formal richtige Auftragsnummer. Ob die Werte fachlich zum Auftrag passen, steht nicht in der Datei, sondern im Shop-Backend; das kann ein Schema grundsätzlich nicht wissen.
fb) Beschreibe, wie der Import mit einem Lieferavis wie diesem umgehen soll. (3 Punkte)
Je sinnvollem Schritt 1 Punkt, z. B.:
Nach der Schemavalidierung jede Lieferung gegen die Datenbank prüfen: Gibt es den Auftrag, hat er den Status „in Fertigung“, passen Rahmenform, Höhe und Farbe?
Lieferungen ohne Abweichung buchen, abweichende nicht buchen, sondern in einer Klärungsliste für die Werkstatt markieren (Bastian Ludwig prüft den Rahmen beim Wareneingang).
Rahmenwerk OWL automatisch über die Abweichung informieren (z. B. Antwortnachricht oder E-Mail mit Lieferavis-Nummer und Position) und den Vorgang protokollieren.
Den Import mit Testdateien wie dieser absichern (Unit-Tests), damit die Prüfung bei späteren Änderungen nicht verloren geht.
Links und weitere Informationen
Einstieg in XML: Hierarchische Daten speichern und Wohlgeformtheit
XML-Dokumente gegen eine Document Type Definition validieren
Datentypen-Definitionen eines XML-Schema zur Validierung nutzen
weitere Übungen: Übungsaufgaben zum Einstieg in XML und Übungsaufgaben zur DTD
als Nachschlagewerk: Der XML-Standard 1.0 (W3C)
Hinweis zur Nachnutzung als Open Educational Resource (OER)
Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Übungsaufgaben zu XML: Wohlgeformtheit, Gültigkeit, DTD und XSD” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/xml-uebungsaufgaben veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/datenformate/xml. Erstellt mit KI-Assistenz; von mir umfassend redaktionell überarbeitet, geprüft und freigegeben. Stand: 28.10.2026.
[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]
