
Hi Xavier, The only way you mixed content can be specified in a DTD is like: <!ELEMENT element (#PCDATA|child1|child2|child3)*> In words that will be zero or more #text or child1 or child2 or child3 (and so on).
default namespace = ""
start = element Vertices { (text | element Vertex { (text | element Data { attribute Constant { text }, attribute Name { text }, attribute Vector { text } })+ })+ }
The problem with this is that the model is one or more instead of zero or more. If you change the + to * then the conversion should work.
default namespace = ""
start = element Vertices { text, element Vertex { text, element Data { attribute Constant { text }, attribute Name { text }, attribute Vector { text } } } }
In this case you have a sequence model, a text node followed by an element in both cases. This is not supported by DTDs, so changing , (group) to | (choice) will make the conversion work. default namespace = "" start = element Vertices { text | element Vertex { text | element Data { attribute Constant { text }, attribute Name { text }, attribute Vector { text } } } } will give you: <?xml encoding="UTF-8"?> <!ELEMENT Vertices (#PCDATA|Vertex)*> <!ATTLIST Vertices xmlns CDATA #FIXED ''> <!ELEMENT Vertex (#PCDATA|Data)*> <!ATTLIST Vertex xmlns CDATA #FIXED ''> <!ELEMENT Data EMPTY> <!ATTLIST Data xmlns CDATA #FIXED '' Constant CDATA #REQUIRED Name CDATA #REQUIRED Vector CDATA #REQUIRED> Best Regards, George ------------------------------------------------------------- George Cristian Bina mailto:george@oxygenxml.com <oXygen/> XML Editor - http://www.oxygenxml.com/