
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:complexType mixed="true"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" ref="tei:hi"/> </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 <xs:complexType mixed="true"> <xs:choice minOccurs="0"> <xs:element maxOccurs="unbounded" ref="tei:name"/> <xs:element maxOccurs="unbounded" ref="tei:name"/> </xs:choice> ... </xs:complexType> [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> <xs:element minOccurs="0" ref="tei:title"/> <xs:element ref="tei:name"/> <xs:element ref="tei:name"/> </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.