XML позволяет нам ассоциировать атрибуты с элементами. Атрибуты являются парами имя-значение, которые действуют наподобие "property" в модели данных. В нашем примере меню мы имеет атрибут, называемый "desc" внутри элемента menugroup.

Есть различия между атрибутами и тэгами. Данный атрибут может присутствовать только внутри тэга, в то время, как вложенные элементы внутри этого тэга могут повторяться. Значение, ассоциированное с атрибутом, должно быть строковым, в то время, как элемент может также иметь вложенные элементы наряду со значениями. Поэтому атрибуты нельзя использовать, когда часть данных может быть представлена в виде коллекции.

Атрибуты вносят некоторую сумятицу, так как представленная информация может быть как элементом, так и атрибутом. Например, мы может представить нашу menugroup так:

<menugroup desc = "Beverages" >

или

<menugroup>
    <desc>Beverages</desc>
</menugroup>

Любой формат представляет данные, но когда ваши данные становятся более сложными, вы должны быть более избирательны.