The following code shows a sample DTD for the BizTalk schema.
<!ENTITY % dataTypes "(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 | entity | entities | enumeration | id | idref | idrefs | nmtoken | nmtokens | notation | string)"> <!ENTITY % elementNamespace "urn:schemas-microsoft-com:xml-data"> <!ENTITY % dataNamespace "urn:schemas-microsoft-com:datatypes"> <!ELEMENT Schema (AttributeType+, ElementType+, description)> <!ATTLIST Schema xmlns CDATA %elementNamespace; xmlns:dt CDATA %dataNamespace; name CDATA #REQUIRED > <!ELEMENT ElementType (AttributeType, attribute, element+, datatype, description, group)> <!ATTLIST ElementType order (one | seq | many) many content (empty | textOnly | eltOnly | mixed) mixed dt:type %dataTypes; #IMPLIED model (open | closed) open name ID #REQUIRED > <!ELEMENT AttributeType (datatype, description)> <!ATTLIST AttributeType name ID #REQUIRED default CDATA #REQUIRED dt:type (entity | entities | enumeration | id | idref | idrefs | nmtoken | nmtokens | notation | string) #IMPLIED dt:values CDATA #IMPLIED required (yes | no) #IMPLIED > <!ELEMENT attribute (description)> <!ATTLIST attribute type CDATA #REQUIRED default CDATA #IMPLIED required (yes | no) #IMPLIED> <!ELEMENT element (description)> <!ATTLIST element type CDATA #REQUIRED minOccurs (0 | 1) #IMPLIED maxOccurs (1 | *) #IMPLIED> <!ELEMENT description () #PCDATA> <!ELEMENT datatype ()> <!ATTLIST datatype dt:type %dataTypes; #REQUIRED> <!ELEMENT group(element, description)> <!ATTLIST group order (one | seq | many) #REQUIRED minOccurs (0 | 1) 1 maxOccurs (1 | *) 1>
Let's look at each of the elements contained in BizTalk schemas and see how they are used.