Для создания первого чернового варианта DTD, чтобы определить класс данных, которому принадлежит приведенный выше документ XML, мы использовали редактор XML CLIP!, созданный компанией Techno2000USA, Inc. Этот редактор имеет очень удобное свойство — он позволяет создавать DTD на основе правильно оформленного документа XML. В листинге 2.5 приведено полученное таким образом определение DTD. Для автоматизации процедуры создания первого чернового варианта DTD пригодны многие редакторы XML. Например, редактор XML Spy (доступный по адресу www.xmlspy.com) может сгенерировать DTD (а также некоторые другие типы схем XML) на основе любого правильно оформленного документа XML.
Листинг 2.5. Первый черновой вариант DID
<!ELEMENT catalog (product_line)* >
<!ELEMENT product_line (product)* >
<!ATTLIST product_line
name CDATA #IMPLIED>
<!ELEMENT product(name]description|price|
quanti ty_in_stock|image|onsale_date|clip)* >
<!ATTLIST product
id CDATA #IMPLIED>
<!ELEMENT name (#PCDATA)* >
<!ELEMENT description (#PCDATA)* >
<!ELEMENT price (#PCDATA)* >
<!ELEMENT quantity_in_stock (#PCDATA)* >
<!ELEMENT image (caption)* >
<!ATTLIST image
width CDATA #IMPLIEO>
<!ATTLIST image
height CDATA #IMPLIED>
<!ATTLIST image
src CDATA #IMPLIED>
<!ELEMENT caption (#PCDATA)* >
<!ELEMENT onsale_date (#PCDATA)* >
<!ELEMENT clip (title)* >
<!ATTLIST clip
format CDATA #IMPLIED>
<!ATTLIST clip
length CDATA #IMPLIED>
<!ATTLIST clip
size CDATA #IMPLIED>
<!ATTLIST clip
src CDATA #IHPLIED>
<!ELEMENT title (#PCDATA)* >