Применение XML атрибутов

Рубрика: Язык разметки XML

Здравствуйте, уважаемые посетители сайта okITgo.ru! Продолжим тему о языке разметки XML и рассмотрим использование атрибутов. Атрибуты в XML элементах могут присутствовать, также как в HTML. Атрибуты обеспечивают дополнительную информацию об элементе.


XML Атрибуты

В HTML атрибуты обеспечивают дополнительную информацию об элементах:

<img src="computer.gif">
<a href="demo.php">

XML атрибуты часто обеспечивают информацию, которая не является частью данных. В примере ниже тип файла не относится к данным, но может понадобиться для программного обеспечения, которое будет выполнять определенные действия с элементом:

<file type="gif">computer.gif</file>


XML Атрибуты Должны Заключаться в Кавычки

Значения атрибутов в xml всегда должны быть заключены в кавычки. Могут использоваться как одинарные, так и двойные кавычки. Для указания пола элемента человек (person) можно написать так:

<person sex="female">

или так:

<person sex=’female’>

Если значение атрибута само по себе содержит двойные кавычки, вы можете использовать одинарные кавычки, как в этом примере:

<gangster name=’George "Shotgun" Ziegler’>

или вы можете использовать символьные объекты:

<gangster name="George &quot;Shotgun&quot; Ziegler">


XML Элементы против Атрибутов

Взгляните на следующие примеры:

<person sex="female">
 <firstname>Виктория</firstname>
 <lastname>Петрова</lastname>
</person>

<person>
 <sex>female</sex>
 <firstname>Виктория</firstname>
 <lastname>Петрова</lastname>
</person>

В первом примере пол (sex) является атрибутом. В последнем, sex – это элемент. Оба примера предоставляют одну и ту же информацию.

Нет правил о том, когда использовать атрибуты, а когда элементы. Атрибуты удобны в HTML. В XML я советую их избегать. Используйте вместо них элементы.


Мой Любимый Способ

Следующие три XML документа содержат в точности одинаковую информацию:

XML атрибут date используется в первом примере:

<note date="10/01/2008">
 <to>Петя</to>
 <from>Света</from>
 <heading>Напоминание</heading>
 <body>Не забудь мне позвонить завтра!</body>
</note>

Элемент date используется во втором примере:

<note>
 <date>10/01/2008</date>
 <to>Петя</to>
 <from>Света</from>
 <heading>Напоминание</heading>
 <body>Не забудь мне позвонить завтра!</body>
</note>

Расширенный элемент date используется в третьем: (ЭТО МОЙ ЛЮБИМЫЙ СПОСОБ):

<note>
 <date>
    <day>10</day>
    <month>01</month>
    <year>2008</year>
 </date>
 <to>Петя</to>
 <from>Света</from>
 <heading>Напоминание</heading>
 <body>Не забудь мне позвонить завтра!</body>
</note>


Избегать XML Атрибуты?

Некоторые из проблем с использованием xml атрибутов:

  • атрибуты не могут содержать несколько значений (элементы могут)
  • атрибуты не могут содержать древовидные структуры (элементы могут)
  • атрибуты сложнее расширить (для будущих изменений)

Атрибуты трудно читать и обслуживать. Используйте элементы для данных, а атрибуты для хранения информации, которая не существенна по отношению к этим данным.

Не делайте подобным образом:

<note day="10" month="01" year="2008"
to="Вася" from="Света" heading="Напоминание"
body="Не забудь мне позвонить завтра!">
</note>


XML Атрибуты для Метаданных

Иногда элементам назначаются ID ссылки. Эти идентификаторы могут использоваться для определения 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>
  </note>
</messages>

Атрибуты id выше используются для идентификации разных заметок. Они не являются частью заметки самой по себе.

Что я пытаюсь здесь сказать – метаданные (данные о данных) следует хранить как xml-атрибуты, а сами данные хранить как элементы.

Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.