serverseitig XML-Datei gegen DTD vaildieren
André Laugks
- php
Hallo!
Hat jemand eine Ahnung, wie man einen XML-Datei serverseitig gegen eine DTD validieren kann, mit Hilfe von PHP?
Es gibt Classen wie Sand am Meer, um zu testen, ob eine XML-Dokument wohlgeformt ist. Auch die XML-Extension kann man dafür nutzen.
Ich habe schon eine ganze Weile gegoogelt und bei diversen Scriptsammlungen geschaut, aber nichts gefunden. Auch mit der DOMXML-Extension gibt es keine Möglichkeit.
Das einzige was mir einfällt, daß man serverseitig eine Software aufruft (mit system(), exec()), der Parameter (XML-Datei, DTD) mit auf den Weg gibt und so validiert und die Rückmeldungen ins Script mit übernimmt.
MfG, André Laugks
Hallo André,
hast Du schonmal probiert was passiert, wenn Du das XML parst, und eine DTD Definition im XML stehen hast. Eigentlich sollte der Parser dann ja gegen die DTD validieren.
Falls es nicht klappt ist die Kommandozeilentool Variante garnicht so schlecht, unter Linux fällt mir da das xmllint aus der libxml2 (Teil von Gnome) ein, ist bei mir unter Suse standardmäßig installiert.
Gruss
Marko
Hallo!
hast Du schonmal probiert was passiert, wenn Du das XML parst, und eine DTD Definition im XML stehen hast. Eigentlich sollte der Parser dann ja gegen die DTD validieren.
Ja, daß hatte ich schon probiert. Ich habe in der DTD ein Element umbenannt, es aber im XML-Dokument so gelassen. Ich habe keine Fehlermeldung bekommen.
PHP nutzt ja Expat und Expat ist IMHO kein validierender XML-Parser.
Es testet IMHO nur ob das XML-Dokument wohlgeformt ist.
[...] xmllint aus der libxml2 (Teil von Gnome) ein [...]
Werde ich wohl auch haben, da ich mir libxml2 unter Linux installiert habe. Werde ich doch mal ausprobieren.
MfG, André Laugks
Halihallo André
hast Du schonmal probiert was passiert, wenn Du das XML parst, und eine DTD Definition im XML stehen hast. Eigentlich sollte der Parser dann ja gegen die DTD validieren.
Ja, daß hatte ich schon probiert. Ich habe in der DTD ein Element umbenannt, es aber im XML-Dokument so gelassen. Ich habe keine Fehlermeldung bekommen.
Genau, es ist nach wie vor wellformed.
PHP nutzt ja Expat und Expat ist IMHO kein validierender XML-Parser.
Es testet IMHO nur ob das XML-Dokument wohlgeformt ist.
Das ist richtig.
[...] xmllint aus der libxml2 (Teil von Gnome) ein [...]
Werde ich wohl auch haben, da ich mir libxml2 unter Linux installiert habe. Werde ich doch mal ausprobieren.
Entweder so über die shell/system. Ich weiss über PHP leider nichts für XML, aber in Perl
wäre hätte ich da eine Kleinigkeit:
#!/usr/bin/perl
use XML::LibXML;
my $parser = XML::LibXML->new;
my $doc = $parser->parse_file('test.xml');
$doc->validate;
XML::LibXML basiert auf libxml2, enthält test.xml eine DOCTYPE mit externer oder interner
DTD, wird diese nachgeladen und dagegen validiert. XML Schema support gibt es natürlich
über XML::Schema.
Viele Grüsse
Philipp
Hallo!
XML::LibXML basiert auf libxml2, enthält test.xml eine DOCTYPE mit externer oder interner
DTD, wird diese nachgeladen und dagegen validiert. XML Schema support gibt es natürlich
über XML::Schema.
:-(
Ich hätte mich damals doch für Perl entscheiden müßen.
Aber, es hällt mich auch keine davon ab, so etwas für PHP zu bauen. ;-)
MfG, André Laugks