Технология XSLT - страница 12

Шрифт
Интервал

стр.

="значение" — такие объявления и называются псевдоатрибутами.

Псевдоатрибут >version содержит информацию о версии XML, в соответствии с которой был создан этот документ. Текущей версией языка XML является 1.0, поэтому в большинстве случаев указывается >version="1.0".

Пример

>

Псевдоатрибут >encoding сообщает, в какой кодировке создан данный документ. По умолчанию выбрана Unicode-кодировка UTF-8 (подробнее см. "Использование Unicode"), но точно так же может быть использована и любая другая кодировка, лишь бы только ее поддерживало программное обеспечение, обрабатывающее документ.

Пример

Большинство документов, созданных на русском языке, используют кириллические кодировки >windows-1251 и >KOI8-R; XML-декларации для этих документов будут иметь вид:

>

и

>

соответственно.

Для документов, в которых использовались только нижние 127 символов ASCII, то есть, символы с кодами, не превышающими >#x7F, псевдоатрибут >encoding указывать необязательно. В этой области символов кодировка UTF-8 совпадает с ASCII.

Псевдоатрибут >standalone говорит о том, использует ли этот документ какие-либо внешние объявления или нет. Как мы узнаем чуть позже, XML-документы могут использовать информацию, которая находится во внешних документах. Опция >standalone, имеющая значение >"yes", означает, что документ не содержит таких объявлений, и, значит, может быть обработан без обращения к внешним источникам.

Декларации XML соответствует продукция >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.-] | '-')*

Используемое в документе название кодировки должно быть известно программному обеспечению, которое этот документ обрабатывает. В противном случае могут возникнуть ошибки и несоответствия. В спецификации рекомендуется использовать названия кодировок, одобренные IANA (Internet Assigned Numbers Authority — Комитет присвоенных кодов Интернет). Кириллице, которая используется в русском языке, в списках IANA присваивается около десятка кодировок. Самыми распространенными из них являются следующие:

□ Windows-1251;

□ KOI8-R;

□ Cp866;

□ ISO-8859-5.

Техническая рекомендация XML оговаривает, что. в тех случаях, когда имя использованной кодировки не является стандартным, оно должно указываться с префиксом ">x-", например:

>

Псевдоатрибуту >standalone соответствует EBNF-правило >SDDecl:

>[32] SDDecl ::= S 'standalone' Eq

>                (("'" ('yes' | 'no') "'")

>                | ( '"' ('yes' | 'no') '"' ) )

Расшифровывается это правило очень просто: псевдоатрибут >standalone может иметь значение >yes или >no, заключенное в одинарные или двойные кавычки.

Секции СDATA

Секции CDATA выделяют части документа, внутри которых текст не должен восприниматься как разметка. CDATA означает буквально "character data" — символьные данные. Секции CDATA задаются следующим образом:

>содержимое]]>

Поскольку синтаксис разметки документов в XML имеет текстовую форму, часто бывает, что само содержимое документа может быть воспринято как разметка. В том случае, когда этого желательно избежать, самым простым выходом будет поместить такие данные внутрь секции CDATA.

Пример

стр.

Похожие книги