Ich muss XML-Dateien mit einer Vielzahl von Einschränkungen überprüfen: Typ und/oder Format des Elementtextes, Co-Vorkommen, Datumsvergleiche und Datumsmathematik sowie einige benutzerdefinierte Regeln aus einer Datenbank (dh Element X kann nur die untergeordneten Elemente A, B und C enthalten) und ich bin mir nicht sicher, wie ich vorgehen soll.Validieren von XML-Dokumenten mit einer Vielzahl von Einschränkungen
Die aktuelle Version dieser Anwendung erzwingt diese Beschränkungen über Perl, da ich denke, dass der Perl-Code einen Großteil der Funktionalität dupliziert, die ich mit XSD oder RELAX NG verwenden würde. Leider würde die Verwendung dieser beiden zu Fehlermeldungen führen, die für die Endbenutzer kryptisch wären. Diese kryptische Nachricht auf etwas Freundliches zu mappen scheint unmöglich zu sein (abgesehen von der Bereitstellung von Zeilen-/Spaltennummern).
Dann gibt es Schematron. Es ermöglicht mir, freundliche Nachrichten zu generieren und Einschränkungen zu überprüfen, die die oben genannten Schema-Sprachen nicht können. Leider werden Typ-/Formatprüfung und Datumsmathematik zu großen XSLT-Vorlagen-Hacks.
Jetzt bin ich mir nicht sicher, was zu tun ist.
Eine Kombination zwischen Schematron und, sagen wir, RELAX NG, scheint der beste Ansatz zu sein, doch die von RELAX NG erzeugten Fehler machen es unmöglich, dem Endbenutzer etwas Informatives zu liefern.
Ich hatte gehofft, eine Vorlagenvorlage zu verwenden, die basierend auf den benutzerdefinierten Regeln in der DB geändert werden würde.
Bleibt der ursprüngliche Ansatz der beste, oder sollte ich mit Schematron/RELAX NG weitermachen und die Durchsetzung des Formats/Typs in XSLT-Vorlagen umsetzen?
Fehler werden nicht "von RELAX NG bereitgestellt", sie werden von einer bestimmten Implementierung bereitgestellt. Welchen benutzen Sie? –
In der Tat. Ich benutze libxml. –