В XML нет никаких правил о том, когда использовать атрибуты, и когда использовать дочерние элементы.
Использование элементов против атрибутов
Данные могут быть сохранены в дочерних элементах или в атрибутах.
Посмотрите на эти примеры:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
В первом примере пола является атрибутом. В последнем, секс является дочерним элементом. Оба примера дают ту же информацию.
Там нет никаких правил о том, когда использовать атрибуты, и когда использовать дочерние элементы. Мой опыт показывает, что атрибуты удобны в HTML, но и в XML, вы должны стараться избегать их. Используйте дочерние элементы, если информация чувствует, как данные.
Мой любимый способ
I like to store data in child elements.
Следующие три XML-документы содержат точно такую же информацию:
Атрибут дата используется в первом примере:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Свидание элемент используется во втором примере:
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Развернутое элемента даты используется в третьем: (THIS IS MY FAVORITE) :
<note>
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Избегайте использования атрибутов?
Если вы избегать использования атрибутов?
Некоторые из проблем, с атрибутами являются:
- атрибуты не могут содержать несколько значений (child elements can)
- атрибуты не легко расширяемой (for future changes)
- атрибуты не могут описывать структуры (child elements can)
- Атрибуты более трудно манипулировать с помощью программного кода
- Значения атрибутов не так легко проверить против DTD
Если вы используете атрибуты как контейнеры для данных, вы в конечном итоге с документами, которые трудно читать и поддерживать. Попробуйте использовать elements для описания данных. Использование атрибутов только для предоставления информации, которая не имеет отношения к данным.
Не в конечном итоге , как это (this is not how XML should be used) так, (this is not how XML should be used) :
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Исключение моего атрибутов Правило
Правила всегда есть исключения.
Мое правило об атрибутах имеет одно исключение:
Иногда я задаю ссылки ID на элементы. Эти ссылки ID можно использовать для доступа к XML-элементы во многом таким же образом, как имя или ID атрибутов в HTML. Этот пример демонстрирует это:
<messages>
<note id="p501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note>
</messages>
Идентификатор в этих примерах, это просто счетчик, или уникальный идентификатор, чтобы идентифицировать различные заметки в файле XML, а не часть данных заметок.
То , что я пытаюсь сказать здесь , что метаданные (data about data) должны быть сохранены в качестве атрибутов, а сами данные должны быть сохранены в качестве элементов.