Большинство документов, созданных на русском языке, используют кириллические кодировки и соответственно. Для документов, в которых использовались только нижние 127 символов ASCII, то есть, символы с кодами, не превышающими Псевдоатрибут Декларации XML соответствует продукция Продукция Значение версии документа может состоять из латинских букв и цифр, а также символов " Кодировка объявляется продукцией Имя кодировки, Используемое в документе название кодировки должно быть известно программному обеспечению, которое этот документ обрабатывает. В противном случае могут возникнуть ошибки и несоответствия. В спецификации рекомендуется использовать названия кодировок, одобренные IANA (Internet Assigned Numbers Authority — Комитет присвоенных кодов Интернет). Кириллице, которая используется в русском языке, в списках IANA присваивается около десятка кодировок. Самыми распространенными из них являются следующие: Windows-1251; KOI8-R; Cp866; ISO-8859-5. Техническая рекомендация XML оговаривает, что. в тех случаях, когда имя использованной кодировки не является стандартным, оно должно указываться с префиксом " Псевдоатрибуту Расшифровывается это правило очень просто: псевдоатрибут Пример
windows-1251
и KOI8-R
; XML-декларации для этих документов будут иметь вид:#x7F
, псевдоатрибут encoding
указывать необязательно. В этой области символов кодировка UTF-8 совпадает с ASCII.standalone
говорит о том, использует ли этот документ какие-либо внешние объявления или нет. Как мы узнаем чуть позже, XML-документы могут использовать информацию, которая находится во внешних документах. Опция standalone
, имеющая значение "yes"
, означает, что документ не содержит таких объявлений, и, значит, может быть обработан без обращения к внешним источникам.XMLDecl
, которая, в свою очередь, использует несколько дочерних правил:[23] XMLDecl ::= '
SDDecl? S? '?>'
VersionInfo
определяет синтаксис псевдоатрибута version
:[24] VersionInfo ::= S? 'version' Eq
("'" VersionNum "'"
| "" VersionNum "")
_
", ".
", ":
" и "-
":[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.-] | '-')*
x-
", например:standalone
соответствует EBNF-правило SDDecl
:[32] SDDecl ::= S 'standalone' Eq
(("'" ('yes' | 'no') "'")
| ( '"' ('yes' | 'no') '"' ) )
standalone
может иметь значение yes
или no
, заключенное в одинарные или двойные кавычки.