<img src="computer.gif"><a href="demo.html">
Атрибуты часто предоставляют информацию, которая не является частью данных. В следующем примере тип файла не имеет ничего общего с данными, но важен для программного обеспечения, которому необходимо обрабатывать этот элемент:
<file type="gif">computer.gif</file>
Значения атрибутов должны быть заключены в кавычки, но можно использовать как одинарные, так и двойные кавычки. Например, пол человека, элемент person можно записать так:
<человек пол="женский">
Или это также работает:
<пол человека='женский'>
Если само значение атрибута содержит двойные кавычки, вы можете использовать одинарные кавычки, как в этом примере:
<gangster name='Джордж "Дробовик" Зиглер'>
Или вы можете использовать символьные сущности:
<person sex="female"><firstname>Анна</firstname><lastname>Смит</lastname></person>
<person><sex>женщина</sex><firstname>Анна</firstname><lastname>Смит</lastname></person>
В первую очередь секс — это собственность. Во втором случае секс является элементом. Оба экземпляра предоставляют одну и ту же информацию.
Не существует правил, определяющих, когда использовать атрибуты, а когда элементы. Мой опыт показывает, что в HTML атрибуты очень удобны в использовании, но в XML следует стараться избегать использования атрибутов. Если информация во многом похожа на данные, используйте элементы.
Следующие три XML-документа содержат одну и ту же информацию:
Атрибут даты используется в первом примере:
<note date="10/01/2008"><to>Тове</to><from>Яни</from><heading>Напоминание</heading><body>Не забудь меня на этих выходных!</body ></примечание>
Во втором примере используется элемент даты:
<note><date>01.10.2008</date><to>Тове</to><from>Яни</from><heading>Напоминание</heading><body>Не забудь меня на этих выходных! </body></note>
В третьем примере используется расширенный элемент даты (мой любимый):
<note><date><day>10</day><month>01</month><year>2008</year></date><to>Тове</to><from>Яни</from> <heading>Напоминание</heading><body>Не забудь меня на этих выходных!</body></note>
Некоторые проблемы, вызванные использованием атрибутов:
Атрибуты не могут содержать несколько значений (элементы могут)
Атрибуты не могут содержать древовидные структуры (элементы могут)
Свойства нелегко расширить (для будущих изменений).
Свойства сложно читать и поддерживать. Пожалуйста, попробуйте использовать элементы для описания данных. Вместо этого просто используйте атрибуты для предоставления независимой от данных информации.
Не делайте таких глупостей (это не тот способ использования XML):
<note day="10" месяц="01" год="2008"to="Tove" from="Jani" heading="Reminder"body="Не забудь меня на этих выходных!"></note>
Иногда элементам присваиваются ссылки на идентификаторы. Эти индексы идентификаторов можно использовать для идентификации элементов XML так же, как атрибут id в HTML. Этот пример демонстрирует нам эту ситуацию:
<messages><note id="501"><to>Тове</to><from>Яни</from><heading>Напоминание</heading><body>Не забудь меня на этих выходных!</body> </note><note id="502"><to>Яни</to><from>Тове</from><heading>Re: Напоминание</heading><body>Не буду</body></ примечание></сообщения>
Приведенный выше атрибут id — это просто идентификатор, используемый для идентификации различных заметок. Это не часть данных заметки.
Идея, которую мы пытаемся донести до вас, заключается в том, что метаданные (данные о данных) должны храниться как атрибуты, а сами данные должны храниться как элементы.
Ниже приведены правила, которым должны следовать сводные атрибуты XML:
Имена атрибутов не могут появляться один раз в одном и том же начальном теге или пустом теге элемента.
Свойство должно быть объявлено с использованием определения типа документа (DTD), объявленного в таблице свойств.
Значения свойств не могут содержать прямые или косвенные ссылки на внешние сущности.
Текст замены любого объекта, называемого прямым или косвенным значением атрибута, не может содержать меньше знака