Re: SGML declaration for XML

Rick Jelliffe (ricko@allette.com.au)
Thu, 7 May 1998 00:07:07 +1000


From: Stefan Mintert <mintert@irb.informatik.uni-dortmund.de>

>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