XML элементы

XML документ состоит из XML элементов.

Что такое XML элемент?

XML элемент - это все от (и включая) начального тега элемента до (и включая) конечного тега элемента.


<price>39.95</price>

Элемент может содержать:

  • другие элементы
  • текст
  • атрибуты
  • или набор из всего выше названного

<bookstore>
   <book category="CHILDREN">
      <title>Harry Potter</title>
      <author>J K. Rowling</author>
      <year>2005</year>
      <price>29.99</price>
   </book>
   <book category="WEB">
      <title>Learning XML</title>
      <author>Erik T. Ray</author>
      <year>2003</year>
      <price>39.95</price>
   </book>
</bookstore>

В приведенном выше примере элементы

<title>, <author>, <year>, <price> содержат текстовый контент, потому что они содержат текст;

<bookstore> и <book> содержат элементный контент, состоящий из других элементов;

у <book> есть атрибут (category="CHILDREN").

Пустые XML элементы

Элемент без контента называется пустым.

При написании элементов без контента (пустых элементов) можно использовать альтернативный синтаксис.

Вместо того, чтобы писать пустой элемент в виде:


<book></book>

Можно написать:


<book />

Такой синтаксис элемента называется самозакрывающийся.

Оба варианта дают одинаковый результат в XML приложениях (парсерах, браузерах и т.д.).

У пустых элементов могут быть атрибуты.

Правила написания имен XML

XML элементы должны следовать следующим правилам написания имен:

  • Имена элементов регистрозависимы
  • Имена элементов должны начинаться с буквы или символа подчеркивания
  • Имена элементов не могут начинаться с сочетания "xml" (или XML, или Xml и т.п.)
  • Имена элементов могут содержать буквы, числа, дефис, символ подчеркивания и точку
  • Имена элементов не могут содержать пробельные символы
  • Имена элементов не могут начинаться с цифры или символа пунктуации

В качестве имен можно использовать любые слова. Нет зарезервированных слов (кроме слова xml).

Хорошая практика составления имен

Старайтесь придумать описательные имена: <first_name>, <last_name>, <date>, <author>.

Имена следует составлять короткие и простые, вроде: <book_title>; а не: <the_title_of_the_book>.

Избегайте символ "-". Если вы напишите нечто вроде "first-name", то некоторые приложения могут решить, что вы хотите вычесть "name" из "first".

Избегайте символ ".". Если вы напишите нечто вроде "first.name", то некоторые приложения могут решить, что "name" это свойство объекта "first".

Избегайте символ ":". Двоеточие зарезервировано для механизма пространства имен.

Не-латинские символы, вроде, éòá вполне легальны в XML, однако, если некое приложение их не поддерживает, то возникнут проблемы.

Соглашение по написанию имен

Для XML элементов не существует какого-либо определенного соглашения по написанию имен. Тем не менее, вот несколько наиболее часто используемых стилей написания имен XML элементов:

СтильПримерОписание
Нижний регистр<firstname>Все буквы в нижнем регистре
Верхний регистр<FIRSTNAME>Все буквы в верхнем регистре
С символом подчеркивания<first_name>Слова разделяются символом подчеркивания
В стиле Pascal<FirstName>Первые буквы всех слов в верхнем регистре
"Верблюжий горб"<firstName>Первые буквы всех слов за исключением первого в верхнем регистре

Если вы выбрали какой-либо стиль написания имен, то следует последовательно придерживаться его!

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

Расширяемость XML элементов

XML элементы могут быть расширены, чтобы нести больше информации.

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


<note>
   <to>Tove</to>
   <from>Jani</from>
   <body>Не забудь про меня в эти выходные!</body>
</note>

Давайте представим, что мы создали приложение, которое извлекает элементы <to>, <from> и <body> из XML документа и формирует следующее сообщение:

СООБЩЕНИЕ

Кому: Tove

От: Jani

Не забудь обо мне в эти выходные!

А теперь представьте, что автор XML документа добавил некоторую дополнительную информацию:


<note>
   <date>2008-01-10</date>
   <to>Tove</to>
   <from>Jani</from>
   <heading>Напоминание</heading>
   <body>Не забудь про меня в эти выходные!</body>
</note>

Прервется ли работа нашего приложения?

Нет. Приложение все равно будет способно отыскать элементы <to>, <from> и <body> и сформировать тот же самый вывод.

Одно из главных достоинств XML состоит в том, что XML документ можно легко расширять не влияя на работу исходного приложения.