Атрибуты XML

Элементы XML могут содержать атрибуты в начале тега, как в HTML.

Атрибут (Attribute) предоставляет дополнительную (дополнительную) информацию о элементе.

Атрибуты XML должны быть окружены кавычками

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

Например, пол человека, тег <person> можно записать так:

<person gender="female">

Или так же можно:

<person gender='female'>

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

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

Или вы можете использовать символы-дубликаты:

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

Элементы XML и атрибуты

Пожалуйста, посмотрите на эти примеры:

<person gender="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>
<person>
  <gender>female</gender>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

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

В XML нет правил, которые告诉我们, когда использовать атрибуты, а когда использовать подэлементы. Мой опыт показывает, что в HTML атрибуты очень удобны, но в XML вы должны стараться избегать использования атрибутов. Если информация кажется вам как данными, то используйте подэлементы.

Мой любимый способ

Ниже приведены три XML документа, содержащие одну и ту же информацию:

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

<note date="2008-01-10">
  <to>George</to>
  <from>John</from>
</note>

Во втором примере используется элемент <date>:

<note>
  <date>2008-01-10</date>
  <to>George</to>
  <from>John</from>
</note>

В третьем примере используется расширенный элемент date (это мой любимый):

<note>
  <date>
    <year>2008</year>
    <month>01</month>
    <day>10</day>
  </date>
  <to>George</to>
  <from>John</from>
</note>

Избегать использования XML атрибутов?

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

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

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

Не делайте таких глупостей (это не то, как XML должен использоваться):

<note day="10" month="01" year="2008"
to="George" from="John" heading="Reminder"
body="Don't forget the meeting!"
</note>

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

Иногда идентификаторы ID назначаются элементам. Эти идентификаторы индексов могут использоваться для идентификации XML элементов, и они работают так же, как атрибут ID в HTML. Этот пример демонстрирует这种情况:

<messages>
  <note id="501">
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
  </note>
  <note id="502">
    <to>John</to>
    <from>George</from>
    <heading>Re: Reminder</heading>
    <body>I will not</body>
  </note> 
</messages>

Верхний ID - это всего лишь идентификатор, используемый для идентификации различных меток. Это не часть данных метки.

Мы стараемся передать вам идею: метаданные (данные о данных) должны храниться в атрибутах, а данные themselves должны храниться в элементах.