Skip to content

XML Dateien validieren

Um XML Dateien zu validieren, können Document Type Definitions (DTD) genutzt werden.
In einer DTD-Datei kann angegeben werden, welche Elemente es an welcher Stelle in der XML-Datei geben darf.

Damit könnte beim Erstellen einer Version und bei der Installation geprüft werden, ob die Datei nicht nur "wohlgeformt" (gültiges XML) sondern auch gültig (der Spezifikation entsprechend) ist. Fehlerhafte XML Dateien können dann frühzeitig abgelehnt werden.

Das DTD für jede Art von XML Datei müsste an einer zentralen Stelle verfügbar sein (bspw. https://www.quiqqer.de/xml/dtd/locale.dtd) und wird dann wie folgt im Kopf der XML-Datei referenziert:

<!DOCTYPE locales SYSTEM "https://www.quiqqer.de/xml/dtd/locale.dtd">

Nach dem Laden der Datei kann dann in PHP auf dem DOMDocument die validate()-Methode aufgerufen werden.
Diese gibt true zurück, wenn alles okay ist, oder wirft bei Fehlern eine Exception.


Alternativ (oder besser) kann man auch XML-Schema 1.0 verwenden.
Hierbei muss das Schema NICHT in jeder XML Datei referenziert werden und auch NICHT an einer zentralen online erreichbaren Stelle liegen.

Die verschiedenen Schemas für jede XML-Datei könnte man bspw. im quiqqer/quiqqer oder einem eigenen Repository ablegen.
Die Prüfung der per PHP in ein DOMDocument geladenen XML-Datei erfolgt dann per DOMDocument::schemaValidate($schemaPath).

von Jan Wennrich bearbeitet