Re: Parameter entity references

I think there are three separate uses of Parameter Entities that must
be considered.

(1) to guard marked sections -- these have values of IGNORE or INCLUDE.
    Marked sections are *much* less useful without these.

(2) to make a DTD easier to read:
    <!Entity % RunningText "(#PCDATA|italic|emphasis|blink|morse|baudot)">
    AAP lovers can use p.zz instead of RunningText for clarity :-)

(3) to allow customisation of a DTD.

All of these uses can be achieved with a preprocessor such as M4 if
you like, but then people can't easily exchange DTDs unless they are
all using M4.  In the case of marked sections, you'd have a problem
exchanging documents too.

A preprocessor such as M4 is a much, much cleaner way of handling all of
these things, I think, and does not in any way break SGML compliance as
long as the preprocessed document is an SGML document.

So since there are other ways to do these things, I would say that sensible
positions seem to me
[A] require support of (1) only.
    Author/Editor makes these a special case, and it's proved useful.

[B] get rid of them all.  If you're going to have a macro pre-processor,
    say so up front instead of intertwingling it with the language.

[C] retain PEs.

In all cases, any PE that occurs in the document must obviously have been
declared at the start of the document in its prolog, so that the document
can be processed with or without a DTD.

[D] An alternative is to allow

<![ %unknown; [stuff]]>
to be treated by default as if %unknown; had expanded to INCLUDE.

That way, a conforming XML processor would at least see the data.

Lee

Received on Thursday, 29 May 1997 22:33:16 UTC