A DTD is for specifying the structure of an XML file: it gives the names of the elements, attributes, and entities that can be used, and how they fit together. Because DTDs are designed for use with text, they have no mechanism for defining the content of elements in terms of data types, because XML has no data types: text is just text. A DTD therefore cannot be used to specify numeric ranges or to define limitations or checks on the text content, only on the markup.
The XML Schema proposal provides a means of specifying element content in terms of data types, so that document type designers can provide criteria for validating the content of elements as well as the markup itself. Schemas are written as XML files, thus avoiding the need for processing software to be able to read XML Declaration Syntax, which is different from XML Instance Syntax.
Descriptions of data types
(Adapted from description found in MSDN and O’Reilly)
Primitive data types
Primitive data types are data types that are not defined in terms of other data types. The following list is of primitive data types as specified in Section 3.2 of the W3C XML 1.0 Recommendation