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)
.