Атрибуты
У тегов могут быть атрибуты. Например, вместо перечисления соответствующих тегов в определении <!ELEMENT specification (variable, value)> можно было бы добавить в DTD следующие строки:
<!ATTLIST specification variable CDATA #required>
<!ATTLIST specification value CDATA #required>
Эти строки создают variable и value как два атрибута specification, так что они не обязаны появляться в виде отдельных элементов. Тогда данные из нашего примера выглядели бы следующим образом:
<?XML version="1.0"?>
<!- *** Basket *** ->
<PRODUCT>
<product_id>98756</product_id>
<product_name>basket</product_name>
<unit_of_measure>each</unit_of-measure>
<specification variable="color", value="blue"
</specification>
<specification variable="size", value="large"
</specification>
<specification></specification>
<specification/>
</PRODUCT>
Заметим, что этот подход дает дополнительную возможность выбора проектировщику XML-документов. Каждый метод обладает своими преимуществами и недостатками.