I started trying to test this, but didnt get very far.
1. What happens to a content model like this:
<alternate maxOccurs="unbounded">
<textNode/>
<elementRef key="hi" />
</alternate>
in RNC (using Syd's latest version of stylesheetes -- I think )
this gives us (text|hi)+ [krekt]
in DTD I get (#PCDATA|hi)* which is not quite krekt but at least is valid
in XSD I get
xs:sequence
<!-- ... -->
i.e same as DTD. good.
2. Let's try using minOccurs
<alternate>
<textNode/>
<elementRef key="name" minOccurs="2"/>
</alternate>
generates
in RNC : (name+ | name+ | text) (?WTF?)
in DTD : (#PCDATA|hi)* again [I think the presence of a textnode always
generates a mixed content like this. Which is fine]
in XSD
...
[which won't do because it is invalid XSD, cos nonambig)
3. Maybe the textnode is special. Let's try something faintly plausible
<sequence>
<elementRef key="title" minOccurs="0" maxOccurs="1"/>
<elementRef key="name" minOccurs="2" maxOccurs="4"/>
</sequence>
in RNC : (title?, name, name)
in DTD : <!ELEMENT ab (((title)?,name,name,name,name))>
in XSD : xs:sequence
None of these of course will validate something with 3 names, even
though the ODD content model suggests they should.
I conclude we're all doomed. But you knew that already.