Philipp Hasenfratz: serverseitig XML-Datei gegen DTD vaildieren

Beitrag lesen

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

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.