XML-схема определяет элементы, которые могут встретиться в XML-документе, и атрибуты, которые могут быть ассоциированы с элементами. Она также определяет структуру документа, например, указывает, какие элементы являются дочерними элементами других, последовательность, в которой могут появляться дочерние элементы и число дочерних элементов. Схема определяет, является ли элемент пустым или содержит текст. Она может содержать и значения атрибутов по умолчанию.
В большинстве случаев не помешает определить структуру XML-документа и правила его построения. Это позволяет проверить соответствие экземпляра документа определению.
HTML, например, использует определение типа документа (document type definition, DTD), определяющее, что называть верным Web-документом. Одно из правил DTD для HTML – содержимое Web-страницы должно находиться в элементе <HTML>, а выводимый контент – в элементе <BODY>, содержащемся в родительском элементе <HTML>.
XDR – это подмножество идей, изложенных в спецификации XML-Data. Реализация схем в парсере MSXML основана на спецификации языка XML-Data Reduced.
<s:Schema xmlns:s="urn:schemas-microsoft-com:xml-data">
<s:ElementType name="title" content="textOnly"/>
<s:ElementType name="authors" content="textOnly"/>
<s:AttributeType name="pages" content="textOnly"/>
<s:ElementType name="book" order="seq" content="eltOnly">
<s:attribute type="pages" />
<s:element type="title" />
<s:element type="authors" />
</s:ElementType>
</s:Schema>
Модель элементов <title>, <author> и <pages> очень проста. Поскольку атрибут content определяет их как "textOnly", эти элементы не могут содержать ничего, кроме текста (то есть, не могут содержать дочерних элементов). Модель элемента <book> сложнее. Атрибут content элемента <book> имеет значение "eltOnly". Это указывает, что элемент <book> может содержать только элементы, содержащиеся в схеме (<title>, <author> и <pages>). Более того, в каждом экземпляре элемента <book> дочерние элементы должны следовать в порядке, указанном в схеме.