Правила синтаксиса XML

Правила синтаксиса XML крайне просты и логичны. Их легко запомнить и легко использовать.

У XML документа должен быть корневой элемент

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


<корневой>
   <потомок>
      <подпотомок>.....</подпотомок>
   </потомок>
</корневой>

В следующем примере корневым является элемент <note>:


<?xml version="1.0" encoding="UTF-8"?>
<note>
   <to>Tove</to>
   <from>Jani</from>
   <heading>Напоминание</heading>
   <body>Не забудь обо мне в эти выходные!</body>
</note>

XML пролог

Следующая строка называется XML прологом:


<?xml version="1.0" encoding="UTF-8"?>

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

В XML документе могут присутствовать международные символы, вроде русских букв, и чтобы не возникало ошибок необходимо указать кодировку, либо сохранить XML файл в формате UTF-8.

UTF-8 - кодировка XML документов по умолчанию.

UTF-8 также является кодировкой по умолчанию для HTML5, CSS, JavaScript, PHP и SQL.

Все XML элементы должны иметь закрывающий тег

В HTML некоторые элементы могут не иметь закрывающего тега:


<p>Это параграф.
<br>

В XML нельзя опускать закрывающий тег. Абсолютно все элементы должны закрываться:


<p>Это параграф.</p>
<br>

Возможно, вы заметили из предыдущих примеров, что у XML пролога нет закрывающего тега. Это не ошибка. Дело в том, что декларация (а XML пролог это декларация) не относится к XML документу, поэтому у нее и нет закрывающего тега.

Теги XML регистрозависимы

Теги XML являются регистрозависимыми. Так, тег <Letter> не то же самое, что тег <letter>.

Открывающий и закрывающий теги должны определяться в одном регистре:


<Message>Это неправильно</message>
<message>Это правильно</message>

"Открывающий и закрывающий теги" иногда еще называют "начальный и конечный теги". Используйте то определение, которое вам более симпатично. По сути это одно и то же.

XML элементы должны соблюдать корректную вложенность

В HTML иногда можно наблюдать такую картину:


<b><i>Это жирный и курсивный текст</b></i>

и иногда это даже работает должным образом.

В XML все элементы обязаны соблюдать корректную вложенность:


<b><i>Это жирный и курсивный текст</i></b>

Понятие "корректная вложенность" по отношению к приведенным примерам просто означает, что так как элемент <i> открывается внутри элемента <b>, то и закрываться он должен внутри элемента <b>.

Значения XML атрибутов должны заключаться в кавычки

Так же, как и в HTML, у XML элементов могут быть атрибуты в виде пары имя/значение.

В XML значения атрибутов должны заключаться в кавычки.

Посмотрите на следующие два примера XML документа. Первый с ошибкой, второй написан правильно.

Пример 1


<note date=12/11/2007>
   <to>Tove</to>
   <from>Jani</from>
</note>

Пример 2


<note date="12/11/2007">
   <to>Tove</to>
   <from>Jani</from>
</note>

Ошибка в первом XML документе заключается в том, что значение атрибута date элемента <note> не заключено в кавычки.

Сущности

Некоторые символы в XML имеют особые значения.

Если вы поместите, например, символ "<" внутри XML элемента, то будет сгенерирована ошибка, так как парсер интерпретирует его, как начало нового элемента.

Так, к ошибке приведет следующая строка XML документа:


<message>если жалование < 1000</message>

Чтобы такая ошибка не возникала, нужно заменить символ "<" на его сущность:


<message>если жалование &lt; 1000</message>

В XML существует 5 предопределенных сущностей:

СущностьСимволЗначение
&lt;<меньше, чем
&gt;>больше, чем
&amp;&амперсанд
&apos;'апостроф
&quot;"кавычки
Только символы "<" и "&" строго запрещены в XML. Символ ">" допустим, но лучше его всегда заменять на сущность.

Комментарии в XML

Синтаксис комментариев в XML такой же, как и в HTML.


<!-- Это комментарий -->

Использование двух символов тире в середине комментария не допустимо.

Неверно:


<!-- Это -- комментарий -->

Странно, но так можно:


<!-- Это - - комментарий -->

В XML пробелы сохраняются

В HTML несколько последовательных пробельных символов усекаются до одного. В XML документе все пробельные символы сохраняются.

В XML новая строка сохраняется как LF

В приложениях Windows новая строка хранится в следующем виде: символ перевода каретки и символ новой строки (CR+LF).

Unix и Mac OSX используют LF.

Старые Mac системы используют CR.

XML сохраняет новую строку как LF.

Синтаксически верный XML документ

Если XML документ составлен в соответствии с приведенными синтаксическими правилами, то говорят, что это "синтаксически верный" XML документ.