означает, что приложение и содержимое инструкции по обработке разделены пробельными символами, причем содержимое состоит из любых символов, кроме последовательности
'?>'
, которая обозначает конец инструкции.
Целевое приложение может иметь любое имя (кроме "
xml
" в любом регистре символов). Имя целевого приложения определяется EBNF-правилом
Несмотря на то, что XML-декларация очень похожа на инструкцию по обработке, с точки зрения стандарта она таковой не является. Если же подходить менее строго, то смысл XML-декларации полностью соответствует смыслу инструкции по обработке: она сообщает обрабатывающему данный документ программному обеспечению информацию о некоторых свойствах этого документа. XML-декларация может содержать псевдоатрибуты
version
,
encoding
и
standalone
, которые мы рассмотрим ниже.
Замечание
В отличие от элементов, XML-декларация, как и инструкции по обработке не могут иметь атрибутов. Однако их содержимое очень часто образуется в форме
имя="значение"
— такие объявления и называются псевдоатрибутами.
Псевдоатрибут
version
содержит информацию о версии XML, в соответствии с которой был создан этот документ. Текущей версией языка XML является 1.0, поэтому в большинстве случаев указывается
version="1.0"
.
Пример
<?xml version="1.0"?>
Псевдоатрибут
encoding
сообщает, в какой кодировке создан данный документ. По умолчанию выбрана Unicode-кодировка UTF-8 (подробнее см. "Использование Unicode"), но точно так же может быть использована и любая другая кодировка, лишь бы только ее поддерживало программное обеспечение, обрабатывающее документ.
Пример
Большинство документов, созданных на русском языке, используют кириллические кодировки
windows-1251
и
KOI8-R
; XML-декларации для этих документов будут иметь вид:
<?xml version="1.0" encoding="windows-1251"?>
и
<?xml version="1.0" encoding="KOI8-R"?>
соответственно.
Для документов, в которых использовались только нижние 127 символов ASCII, то есть, символы с кодами, не превышающими
#x7F
, псевдоатрибут
encoding
указывать необязательно. В этой области символов кодировка UTF-8 совпадает с ASCII.
Псевдоатрибут
standalone
говорит о том, использует ли этот документ какие-либо внешние объявления или нет. Как мы узнаем чуть позже, XML-документы могут использовать информацию, которая находится во внешних документах. Опция
standalone
, имеющая значение
"yes"
, означает,
что документ не содержит таких объявлений, и, значит, может быть обработан без обращения к внешним источникам.
Декларации XML соответствует продукция
XMLDecl
, которая, в свою очередь, использует несколько дочерних правил:
Значение версии документа может состоять из латинских букв и цифр, а также символов "
_
", "
.
", "
:
" и "
–
":
[26] VersionNum ::= ([a-zA-Z0-9_.:] | '-')+
Кодировка объявляется продукцией
EncodingDecl
, которая синтаксически похожа на
VersionInfo
:
[80] EncodingDecl ::= S? 'encoding' Eq
("'" EncName "'"
| '"' EncName '"')
Имя кодировки,
EncName
, может состоять только из латинских букв, цифр и символов "
.
", "
_
" и "
–
", причем первым символом названия кодировки всегда должна быть буква:
[81] EncName [A-Za-z] ([A-Za-z0-9.-] | '-')*
Используемое в документе название кодировки должно быть известно программному обеспечению, которое этот документ обрабатывает. В противном случае могут возникнуть ошибки и несоответствия. В спецификации рекомендуется использовать названия кодировок, одобренные IANA (Internet Assigned Numbers Authority — Комитет присвоенных кодов Интернет). Кириллице, которая используется в русском языке, в списках IANA присваивается около десятка кодировок. Самыми распространенными из них являются следующие:
□ Windows-1251;
□ KOI8-R;
□ Cp866;
□ ISO-8859-5.
Техническая рекомендация XML оговаривает, что. в тех случаях, когда имя использованной кодировки не является стандартным, оно должно указываться с префиксом "
x-
", например:
<?xml version="1.0" encoding="x-BK-CYR"?>
Псевдоатрибуту
standalone
соответствует EBNF-правило
SDDecl
:
[32] SDDecl ::= S 'standalone' Eq
(("'" ('yes' | 'no') "'")
| ( '"' ('yes' | 'no') '"' ) )
Расшифровывается это правило очень просто: псевдоатрибут
standalone
может иметь значение
yes
или
no
, заключенное в одинарные или двойные кавычки.
Секции СDATA
Секции CDATA выделяют части документа, внутри которых текст не должен восприниматься как разметка. CDATA означает буквально "character data" — символьные данные. Секции CDATA задаются следующим образом: