XML Data Reduced Schemas
As mentioned earlier in this chapter, BizTalk uses an XML Data Reduced schema. This schema and the schema currently defined by the W3C differ. Microsoft needed to build and release Internet Explorer 5, and it wanted to include an XML parser with Internet Explorer 5 that would work with schemas. Unfortunately, the W3C schema standard was not completed at the time Microsoft was developing Internet Explorer 5. Therefore, Microsoft used the temporary schema XDR. The XDR schema is based on a 1998 proposal to the W3C and can be found at http://www.w3.org/TR/1998/NOTE-XML-data-0105. Many similarities exist in the XDR and the W3C schemas, but there are also differences. The primary difference is that the two schemas use different keywords and XDR has less functionality.
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.