>What is the correct SGML declaration for XML?
The correct one is:
<!SGML -- SGML Declaration for XML -- "ISO 8879:1986 (WWW)"
This is the 1997 extensions of SGML for the WWW: character ranges
in names, hexadecimal character references, and white-space handling.
(Parsers in) SGML systems before made before 1998 will not support
these extensions.
<!SGML -- SGML Declaration for XML -- "ISO 8879:1986 (ENR)"
This is the 1996 extension to SGML: it allows character ranges only.
(Parsers in) SGML systems made before 1997 will not support this
extension.
XML can still use this: but you will want to use decimal numeric
character
references only. You must have a DOCTYPE declaration. The parser
must support NET-enabled tag minimization, to cope with <x/> tags,
otherwise just use <x> for EMPTY element types.
"ISO 8879:1986 (ENR)" is transitional only.
Finally <!SGML "ISO 8879:1986"
This is traditional SGML. XML can still use this: but you will want to
use
decimal numeric character references only, and restrict yourself to
less than 60 name characters more than ASCII. You must have a
DOCTYPE declaration. The parser must support NET-enabled
tag minimization to cope with <x/> tags, otherwise just use <x> for
EMPTY element types.
>(2):
> a Name may start (NAMESTRT) with a ':'
All uses of ":" are still experimental. Starting a name with ":" would
presumably
be done to implement some scoping. In general, XML has avoided anything
which makes parsing or understanding a name depend on context--it has a
terrible complicating effect. (Note however, that attribute and data values
are full of context-dependent connotations.)
My understanding is that the namespace proposal is currently not
intending to allow ":" to prefix names, but you should ask the WG people
for some confirmation: (Tim?)
Rick Jelliffe