> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> It is always 2 lines, never one, and always indented by 4 spaces.
> I believe there should be written "SYSTEM" before the DTD URL, am I wrong?
No. For SGML, it's
external id = SYSTEM, (s+, system literal)?
| PUBLIC, s+, pub id literal, (s+, system literal)?
and an SGML system is supposed to be able to infer a system literal
from a thing's name and type, e.g.
<!ENTITY foo SYSTEM> => SYSTEM "foo.ent"
<!DOCTYPE foo SYSTEM> => SYSTEM "foo.dtd"
although the inference method is entirely up to the implementation.
XML requires the system literal, but is otherwise the same; if you
have PUBLIC, you *mayn't* have SYSTEM as well.
In XML, system literals are URIs. What's more, the HTML and XHTML
recommendations specify the text that is to be used, including the
exact spelling of the pub id literal and system literal.