Hallo Thomas,
Ich zitiere mal aus der XML-Recommendation:
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
[75] ExternalID ::= 'SYSTEM' S SystemLiteral
| 'PUBLIC' S PubidLiteral S SystemLiteral
Wie man sieht, ist es möglich, keinerlei DTD anzugeben. Wenn man aber PUBLIC verwendet, muss man ein PubidLiteral _und_ ein SysteLiteral angeben.
Wenn man eine externe DTD angibt, muss also klar sein, wo diese zu finden ist. Die Pubid soll lediglich ermöglichen, dass der Client die zu verwendende DTD erkennt, ohne sie mindestens einmal vom angegebenen Ort abgerufen zu haben.
Grüße
Daniel