> > However, if I
> > care compatibility, I still prefer to embed internal DTD subsets rather
> > than a PI or attribute. Does use of PIs or attributes have any
> > advantages over use of internal subsets?
>
> Internal subsets don't support namespaces properly.
Since we are talking about COMPATIBILITY with or migration from DTDs, proper
support of namespaces is irrelevant.
> Internal subsets can be quite unwieldly if you have large DTDs
> (particularly if you have small instances).
...
> There's also a fundamental difference: instead of having the schema in one
> place and referencing it, you are duplicating the schema information in
> multiple places. ...
These points are correct, but can be easily avoided by creating external parameter
entities containing default values and ID/IDREF declarations and referencing such
external parameter entites from internal subsets. A disadvantage of this approach
is that conformant processors do not necessarily read external parameter entities.
However, this approach does not require RELAXNG-aware processors.
Cheers,
Makoto