Just to follow up on a detail of
my exchanges with Wendell, I made
a small customization which simply
killed numbered divs.

The resulting DTD has these entities[1]:

<!ENTITY % macro.bodyPart.div '(div,(div | divGen | (;))*)' >

<!ENTITY % macro.bodyPart.div0 '(divGen | (;))*' >

<!ENTITY % macro.bodyPart.div1 '(divGen | (;))*' >

<!ENTITY % macro.bodyPart.pre '(divGen,(;)*)*' >

<!ENTITY % macro.bodyPart.main 
'((%macro.bodyPart.pre;),((%macro.bodyPart.div;) | 
(%macro.bodyPart.div0;) | (%macro.bodyPart.div1;)))' >

as you can see, the *div0 and *div1 ones are identical, and so
produce an error when |'ed together.

THIS is what I mean when I say that it's simply a bug in the
XSLT code which generated the above from the TEI sources.
Plainly, the situation is unambiguously detectable - any occurrence
of "A  | B" where "A = B" must be reduced to "A".

Naturally, that isn't the end of the story, as this fix
alone would not fix the problem, but I hope it demonstrates
that the issue on the table is solvable relatively
easily [2].



[1] for the 'satiably curious, yes, those parameter entities
are not actually used for defining "body"  and are redundant....

[2] compared to understanding Windows Vista DRM, for example.

[3] I am tempted to hardwire a fix into the XSLT implementation
of ODD to make this example work....