The following is an example of representating the XML schema with a DTD. The representation is not exact, however; and there are a number of problems:
<!-- The possible element datatypes according to http://msdn.microsoft.com/xml/schema/reference/datatypes.asp --> <!ENTITY % datatypes "(entity | entities | enumeration | id | idref | idrefs | nmtoken | nmtokens | notation | string | bin.base64 | bin.hex | boolean | char | date | dateTime | dateTime.tz | fixed.14.4 | float | int | number | time | time.tz | i1 | i2 | i4 | r4 | r8 | ui1 | ui2 | ui4 | uri | uuid)" > <!-- *** datatype **** --> <!ELEMENT datatype (description)*> <!ATTLIST datatype dt:type %datatypes; #IMPLIED xmlns:dt CDATA #FIXED "urn:schemas-microsoft-com:datatypes" > <!-- ***** description ***** --> <!ELEMENT description (#PCDATA) > <!-- **** element ***** --> <!-- additional constraint on maxOccurs is that it must be 1 or "*" --> <!ELEMENT element (description)* > <!ATTLIST element type IDREF #REQUIRED minOccurs CDATA #IMPLIED maxOccurs CDATA #IMPLIED > <!-- **** attribute ***** --> <!ELEMENT attribute (description)* > <!ATTLIST attribute type IDREF #REQUIRED default CDATA #IMPLIED required (yes | no) "no" > <!-- **** AttributeType ***** --> <!ELEMENT AttributeType (datatype | description)* > <!ATTLIST AttributeType name ID #REQUIRED default CDATA #IMPLIED dt:type %datatypes; #IMPLIED dt:values CDATA #IMPLIED required (yes | no) #IMPLIED xmlns:dt CDATA #FIXED "urn:schemas-microsoft-com:datatypes" > <!-- **** ElementType ***** --> <!ELEMENT ElementType (datatype | description | AttributeType | attribute | element | group)* > <!ATTLIST ElementType name ID #REQUIRED model (open | closed) #IMPLIED content (empty | textOnly | eltOnly | mixed) #IMPLIED order (one | seq | many) #IMPLIED dt:type %datatypes; #IMPLIED dt:values CDATA #IMPLIED required (yes | no) #IMPLIED xmlns:dt CDATA #FIXED "urn:schemas-microsoft-com:datatypes" > <!-- **** group ***** --> <!ELEMENT group (group | element | description)*> <!ATTLIST group minOccurs CDATA #IMPLIED maxOccurs CDATA #IMPLIED order (one | seq | many) #IMPLIED > <!-- **** Schema ***** --> <!ELEMENT Schema (AttributeType | ElementType | description )* > <!ATTLIST Schema name CDATA #IMPLIED xmlns:dt CDATA #FIXED "urn:schemas-microsoft-com:datatypes" >