You have. (Thankfully. Reassuring to see that you can be wrong about
something. :)
<!ELEMENT foo (%bar;)>
is entirely valid in the external subset, but not in the internal. This
is the relevant part of the spec (from section 2.8):
"Well-Formedness Constraint: PEs in Internal Subset
In the internal DTD subset, parameter-entity references can
occur only where markup declarations can occur, not within
markup declarations. (This does not apply to references that
occur in external parameter entities or to the external
subset.)"
I still haven't found a sensible way to implement this in the external
subsets, though. :-(
--Lars M.