Zum Inhalt springen

XML prüfen

Nicht passende Tags, undefinierte Entitäten, fehlerhafte Namespaces – gefunden und genau verortet vom XML-Parser Ihres Browsers. Es wird nichts gespeichert.

  • Nie gespeichert
  • Keine Warteschlange, kein Warten
  • Ohne Anmeldung, ohne Wasserzeichen
Formatiert

Fügen Sie XML ein – es wird schon während der Eingabe geprüft.

So funktioniert’s

1

XML einfügen

Oder die Datei ablegen. Es wird nichts irgendwohin gesendet.

2

Ergebnis lesen

Wohlgeformt, mit einer Übersicht über den Inhalt. Oder genau Zeile und Spalte des ersten Problems.

3

Korrigieren und erneut prüfen

Direkt im Feld bearbeiten; das Ergebnis aktualisiert sich während der Eingabe.

Zwei verschiedene Hürden – und welche hier geprüft wird

XML kennt zwei Stufen der Korrektheit, und sie werden ständig verwechselt. Wohlgeformt bedeutet, dass das Dokument die Syntax von XML selbst einhält: ein Wurzelelement, jedes Tag geschlossen, korrekte Verschachtelung, zulässige Zeichen, korrekt maskierte kaufmännische Und-Zeichen und spitze Klammern, Attributwerte in Anführungszeichen, eindeutige Attributnamen innerhalb eines Elements. Gültig bedeutet mehr – dass das Dokument zusätzlich einem bestimmten Schema entspricht, mit den richtigen Elementen in der richtigen Reihenfolge und den richtigen Arten von Werten. Diese Seite prüft Ersteres. Jeder XML-Parser lehnt ein Dokument ab, das daran scheitert – es ist also die Prüfung, die entscheidet, ob eine Datei überhaupt gelesen werden kann.

Die Fehler sind vorhersehbar. Ein nicht maskiertes & ist mit großem Abstand der häufigste – es leitet eine Entitätsreferenz ein, sodass eine URL mit Query-String, die direkt in ein Element eingefügt wird, das Dokument zerstört. Ein einzelnes < im Text bewirkt dasselbe. Danach kommen nicht passende oder nicht geschlossene Tags, in falscher Reihenfolge geschlossene Elemente, zwei Wurzelelemente und ein verirrtes Steuerzeichen, das XML überhaupt nicht zulässt, obwohl es unsichtbar in der Datei steht.

Eine DTD oder ein Schema wird bewusst nie abgerufen – das ist eine Sicherheitseigenschaft, keine fehlende Funktion. Ein XML-Dokument kann eine externe Entität benennen, und ein Parser, der sie auflöst, ruft ab, worauf sie zeigt – eine Datei auf der Festplatte, eine Adresse in einem internen Netzwerk. Das ist die XML-External-Entity-Schwachstelle, eine der am häufigsten ausgenutzten Fehlerklassen überhaupt, und der einzige vollständige Schutz besteht darin, solche Entitäten nicht aufzulösen. Deshalb greift hier nichts nach außen, und der Preis dafür ist, dass die Validierung gegen ein Schema nicht zum Umfang gehört.

Sie erhalten genau Zeile und Spalte, an der das Parsen abgebrochen ist. Wie bei jedem Parser ist das die Stelle, an der das Dokument keinen Sinn mehr ergab, nicht die Stelle des Fehlers: Ein nicht geschlossenes Tag wird meist beim unerwarteten schließenden Tag gemeldet, das darauf folgt – manchmal Hunderte Zeilen später. Die gemeldete Position ist der Punkt, ab dem Sie nach oben suchen sollten, nicht der, an dem Sie ändern müssen.

Wenn Sie etwas anderes brauchen

Für die Validierung gegen ein Schema ist xmllint das Referenz-Tool: xmllint --noout --schema schema.xsd file.xml für XSD, --relaxng für RELAX NG und --noout --valid für eine DTD. Es meldet jeden Verstoß, statt beim ersten aufzuhören – genau das, was Sie wollen, wenn ein Dokument wirklich falsch und nicht bloß kaputt ist.

Bei allem, was nicht vertrauenswürdige Eingaben betrifft, zählt die Parser-Konfiguration mehr als der Validator. Schalten Sie die Auflösung externer Entitäten und die DTD-Verarbeitung in Ihrer Sprache ausdrücklich ab – defusedxml in Python, LIBXML_NONET in PHP, Secure Processing in Java –, denn mehrere verbreitete Parser lösen Entitäten standardmäßig noch immer auf, und genau in dieser Voreinstellung steckt die Schwachstelle.

Häufig gestellte Fragen

Wird mein XML irgendwo gespeichert?

Nein. Es gibt keinen Serveraufruf und keine Protokollierung, und es wird nichts gespeichert. Sie können nach dem Laden der Seite die Internetverbindung trennen, und sie funktioniert weiter. Das ist hier wichtiger, als es aussieht: Was Menschen in einen Online-Formatierer einfügen, sind API-Antworten, Konfigurationsdateien und Fehlermeldungen – und die enthalten regelmäßig Tokens, Kundendaten und interne Hostnamen.

Was bedeutet „wohlgeformt“?

Dass das Dokument die Regeln von XML selbst einhält: jedes Tag geschlossen, Tags in der richtigen Reihenfolge verschachtelt, genau ein Wurzelelement, Attribute in Anführungszeichen und jedes & und < entweder maskiert oder Teil einer gültigen Entität. Das ist die erste von zwei Fragen, die man an XML stellen kann. Die zweite – ob das Dokument einem bestimmten Schema entspricht – ist eine eigene, und diese Seite beantwortet sie nicht.

Wird gegen eine DTD oder ein XSD-Schema validiert?

Nein. Geprüft wird, ob das Dokument wohlgeformtes XML ist – und das ist der Fehler, vor dem die meisten tatsächlich sitzen. Eine Schema-Validierung braucht Ihre Schemadatei und einen validierenden Parser, und kein Browser bringt einen mit; hier so zu tun, als ob, hieße entweder, Ihr Dokument an einen Server zu senden, oder stillschweigend nicht zu prüfen. Der Unterschied ist wissenswert: Ein Dokument kann vollkommen wohlgeformt und trotzdem falsch für sein Schema sein.

Was sind die häufigsten XML-Fehler?

Meist ist es ein einzelnes kaufmännisches Und-Zeichen – & muss als &amp; geschrieben werden, auch innerhalb einer URL, sodass ein direkt in ein Element eingefügter Query-String das Dokument zerstört. Danach folgen: ein Tag, das in falscher Reihenfolge geschlossen wird, zwei Wurzelelemente, eine undefinierte Entität wie &nbsp; (die HTML definiert, XML aber nicht) und ein Namespace-Präfix, das ohne Deklaration verwendet wird. Jeder Fehler wird mit Namen und Position gemeldet.

Ist HTML gültiges XML?

Meist nicht – und das ist normal, kein Fehler. HTML erlaubt nicht geschlossene Tags wie <br> und <li>, Attribute ohne Anführungszeichen und einzelne kaufmännische Und-Zeichen; XML erlaubt nichts davon. Wenn Sie HTML brauchen, das zugleich gültiges XML ist, ist das XHTML – und dort muss jedes Tag geschlossen werden.

Gibt es eine Größenbegrenzung?

Den verfügbaren Arbeitsspeicher, keine von uns gesetzte Grenze. Dokumente mit einigen Megabyte werden sofort verarbeitet; sehr große stoßen daran, wie viel auf einmal gehalten werden kann – nicht an etwas auf unserer Seite.

Gut zu wissen: Wohlgeformtheit, keine Schema-Validierung. Geprüft werden ausgeglichene Tags, korrekte Verschachtelung und zulässige Zeichen, und Sie erhalten genau Zeile und Spalte des ersten Problems. Eine Validierung gegen eine DTD oder XSD würde bedeuten, sie abzurufen – eine Netzwerkanfrage, die diese Seite bewusst nie stellt.

Dieses Tool auf Ihrer Website einbinden

Kostenlos für jeden Blog, jede Kursseite und jeden Hilfeartikel. Fügen Sie ein einziges Snippet ein, und Ihre Besucher können das Tool direkt auf Ihrer Seite nutzen.