However,
> <!ENTITY %UnixSpecifics SYSTEM "http....">
>
> <![%Dos;[
> %DosSpecifics;
> ]>
is very like
#define DOS 1
#ifdef DOS
# include DosSpecifics
#endif
except that CPP allows general expressions there.
It turns out that more robust programming language avoid macros
altogether (e.g. C++) because there is isufficient compile-time
checking, but that doesn't really affect XML!
When I've looked at this in the past for SGML, it has seemed to me that
one coud only do partial expansion with a pre-processor.
But really I was thinking of a conceptually separate pass rather
than a completely separate one -- you'd need to have some feedback and
a shred symbol table. It may also be appropriate to treat parameter
entities and text entities quite differently -- I'm not sure.
Lee