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


Правила синтаксиса XML очень просты и логичны.

Эти правила легко изучить и легко применять.


Объявление XML

Объявление XML — необязательная часть файла. Если оно есть, его нужно разместить в первой строке документа, как показано ниже:

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

В приведенном выше примере содержится версия XML (version="1.0") и даже кодировка символов (encoding="utf-8").

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


XML-документ должен иметь корневой элемент

XML должен содержать корневой элемент, который является родителем всех остальных элементов. Например, в следующем примере root является корневым элементом:

<root> <child> <subchild>.....</subchild> </child> </root>

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

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

XML-документы состоят из элементов. Каждый элемент включает открывающий тег, закрывающий тег и содержимое элемента.


Атрибуты

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

Атрибуты располагаются в открывающем теге, например:

<person age="30" gender="male">John Doe</person>

Самозакрывающиеся теги XML

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

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

<elementName attribute="value" />

Самозакрывающийся тег — это тег, который содержит как открывающий, так и закрывающий теги в одном теге, по форме похожий на теги пустых элементов в HTML.

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

Используя тег пустого элемента:

<exampleTag />

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

<exampleTag></exampleTag>

Эти два представления эквивалентны; вы можете выбрать любое из них в соответствии с личными или проектными соглашениями.

Во многих XML-парсерах обе формы интерпретируются как одна и та же структура.

Пример

<lineBreak />

Здесь<lineBreak />— это самозакрывающийся тег, обозначающий операцию разрыва строки.

Самозакрывающийся тег с атрибутами:

<image src="logo.png.html" alt="Logo" />

Этот тег представляет элемент изображения. Он содержит атрибуты src и alt, которые задают путь к изображению и альтернативный текст.

Пример XML-файла:

Пример

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

В этом примере,<note>и<emptyElement />оба являются самозакрывающимися тегами.<note>Назначение тега — передавать информацию, и<emptyElement />является пустым тегом без дочерних элементов.


Теги XML чувствительны к регистру

Теги XML чувствительны к регистру. Тег <Letter> отличается от тега <letter>.

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

<Message>这是错误的</message>
<message>这是正确的</message>

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


XML должен быть правильно вложен

В HTML часто можно увидеть элементы, которые неправильно вложены:

<b><i>This text is bold and italic</b></i>

В XML все элементыдолжныбыть правильно вложены друг в друга:

<b><i>This text is bold and italic</i></b>

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


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

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

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

Пожалуйста, изучите следующие два XML-документа. Первый из них неправильный, второй — правильный:

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

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


Ссылки на сущности

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

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

Это приведёт к ошибке XML:

<message>if salary < 1000 then</message>

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

<message>if salary &lt; 1000 then</message>

В XML существует 5 предопределённых ссылок на сущности:

&lt; < знак меньше
&gt; > знак больше
&amp; & амперсанд
&apos; ' апостроф
&quot; " кавычка

Примечание:В XML только символы "<" и "&" действительно недопустимы. Знак «больше» допустим, но полезной привычкой является заменять его ссылкой на сущность.


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

Синтаксис написания комментариев в XML очень похож на синтаксис в HTML.

<!-- This is a comment -->

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

HTML схлопывает (объединяет) несколько последовательных пробельных символов в один:

HTML:
Hello           Tove
Вывод: Hello Tove

В XML пробелы в документе не схлопываются:

<bookstore>
    <book>
        <title>xx       xxx</title>
        <author>John Doe</author>
        <price>29.99</price>
    </book>
</bookstore>

Содержимое title считывается и отображается следующим образом:

xx       xxx

XML сохраняет символы новой строки как LF

В приложениях Windows символ новой строки обычно хранится как пара символов: возврат каретки (CR) и перевод строки (LF).

В Unix и Mac OS X для хранения новой строки используется LF.

В старых системах Mac для хранения новой строки используется CR.

XML сохраняет символы новой строки как LF.

Другие расширения