Библиотека: XML: справочник

Глава 2. XML

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

ПРИМЕЧАНИЕ                 В следующем далее справочнике команд полужирным шрифтом в примерах выделены компоненты текущей конструкции. Верхний индекс в квадратных скобках справа от имени конструкции (например, AttDef[53]) указывает на ее описание в спецификации XML.

AttDef[53] (определение атрибута)

Назначение

Определяет конкретный атрибут, включая его имя, тип данных и значение по умолчанию.

Синтаксис EBNF

AttDef ::= S Name S AttType S DefaultDecl

Стандартный синтаксис

[ ... ] Name [ ... ] AttType [ ... ] DefaultDecl

Аргументы

n       S представляет собой один или несколько разделяющих символов — знаков пробела, перевода каретки, начала новой строки или табуляции (см. конструкцию S ). Синтаксис:

     {[#x20|#x9|#xD|#xA][#x20|#x9|#xD|#xA]...[#x20|#x9

     |#xD|#xA]}

n       Name задает для типа элемента состоятельное  имя XML, начинающееся с буквы или знака подчеркивания, (см. конструкцию Name ). Синтаксис:

     #x nnnn [#x nnnn ][_][:][#x nnnn ]

     |[0|1|2|3|4|5|6|7|8|9][.][-][#x nnnn ]

     [#x nnnn ]...[# x nnnn ]

n       AttType определяет тип атрибута (см. конструкцию AttType ). Синтаксис:

     StringType | TokenizedType | EnumeratedType

n       DefaultDecl объявляет значение по умолчанию как задаемое обязательно или необязательно (см. конструкцию DefaultDecl ). Синтаксис:

     #REQUIRED|#IMPLIED|[[#FIXED[ ... ]] AttValue ]

Комментарии

AttDef является компонентом конструкции AttlistDecl .

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

Каждый атрибут содержит два компонента: имя и значение. Пара имя-значение составляет спецификацию атрибута .

Значение атрибута используется для точной настройки конструкции. Варьируя значение, вы можете, к примеру, изменить способ отображения содержания: выровнять границы, акцентировать и т. д.

Чтобы XML-документ был хорошо оформлен, каждый атрибут соответствующей конструкции — независимо от того, имеет он содержание или нет, — должен быть уникален. Однако значение атрибута не обязательно должно быть уникальным.

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

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

Чтобы XML-документ был хорошо оформлен, значения атрибутов этого документа не должны содержать ссылок на внешние единицы и располагаться в пределах внутреннего блока (раздела DTD, находящегося внутри документа-источника).

Используйте конструкцию AttlistDecl для точной настройки элемента, его атрибутов и дочерних элементов.

Если для данного типа элемента объявлено больше одного списка атрибутов, XML-процессор объединяет их. При этом может быть выведено предупреждающее сообщение.

ПРИМЕЧАНИЕ                 При выводе предупреждающего сообщения обработка продолжается, а вслед за выводом сообщения об ошибке следует прекращение обработки.

Если для данного атрибута объявлено более одного определения, XML-процессор воспринимает первое из них, игнорирует последующее и может вывести предупреждающее сообщение.

Примеры

В данном примере для элемента ENHANCE объявляются три атрибута:

<!ATTLIST ENHANCE

    id     ID        #REQUIRED

    name      CDATA     #IMPLIED

    type      (bold|italics|underline)

>

В следующем примере элемент HTML FORM имеет атрибут method :

    method (GET|POST)   GET

Родственные конструкции

AttlistDecl , AttType , DefaultDecl , markupdecl , Name , S .

AttlistDecl[52] (объявление списка)

Назначение

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

Синтаксис EBNF

AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'

Стандартный синтаксис

<!ATTLIST [ ... ] Name [ AttDef [ AttDef

[... AttDef ]]][ ... ]>

Аргументы

n       <!ATTLIST  — указатель начала списка атрибутов. Это зарезервированное ключевое слово, вводимое только прописными буквами.

n       S представляет собой один или несколько разделяющих символов — знаков пробела, перевода каретки, начала новой строки или табуляции (см. конструкцию S ). Синтаксис:

     {[#x20|#x9|#xD|#xA][#x20|#x9|#xD|#xA]... [#x20|#x9|#xD|#xA]}

n       Name задает для типа элемента состоятельное  имя XML, начинающееся с буквы или знака подчеркивания, (см. конструкцию Name ). Синтаксис:

     #x nnnn [#x nnnn ][_][:][#x nnnn ]

     |[0|1|2|3|4|5|6|7|8|9][.][-][#x nnnn ]

     [#x nnnn ]...[# x nnnn ]

n       AttDef записывает определение атрибута (см. конструкцию AttDef ). Синтаксис:

     [ ... ] Name [ ... ] AttType [ ... ] DefaultDecl

n       > знак, закрывающий список атрибутов.

Комментарии

AttlistDecl является компонентом конструкции markupdecl .

AttlistDecl является представлением атрибута в рамках определения типа документа (DTD).

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

Каждый атрибут содержит два компонента: имя и значение. Пара имя-значение составляет спецификацию атрибута .

Значение атрибута используется для точной настройки элемента. Варьируя значение, вы можете, к примеру, изменить способ отображения содержания: выровнять границы, акцентировать и т. д.

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

Чтобы XML-документ рассматривался как состоятельный, должен быть объявлен каждый из атрибутов его элементов, а фактический их тип должен соответствовать объявленному.

Используйте конструкции AttlistDecl для « точной настройки » элемента, его атрибутов и дочерних элементов.

Если для данного типа элемента объявлено больше одного списка атрибутов, XML-процессор объединяет их. При этом может быть выведено предупреждающее сообщение.

Если для данного атрибута объявлено более одного определения, XML-процессор воспринимает первое из них, игнорирует последующее и может вывести предупреждающее сообщение.

ПРИМЕЧАНИЕ                 При выводе предупреждающего сообщения обработка продолжается, а вслед за выводом сообщения об ошибке следует прекращение обработки.

Так как знак « больше » ( > ) используется как указатель окончания списка атрибутов, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Пример

В данном примере объявляется список атрибутов элемента ENHANCE :

<!ATTLIST ENHANCE

    id     ID     #REQUIRED

    name      CDATA  #IMPLIED

    type      (bold|italics|underline)

>

Родственные конструкции

AttDef , AttType , DefaultDecl , markupdecl , Name , S .

Attribute[41] (атрибут)

Назначение

Расширяет информацию об атрибуте.

Синтаксис EBNF

Attribute ::= Name Eq AttValue

Стандартный синтаксис

Name [ ... ]=[ ... ] AttValue

Аргументы

n       Name задает для типа элемента состоятельное  имя XML, начинающееся с буквы или знака подчеркивания, (см. конструкцию Name ). Синтаксис:

     #x nnnn [#x nnnn ][_][:][#x nnnn ]

     |[0|1|2|3|4|5|6|7|8|9][.][-][#x nnnn ]

     [#x nnnn ]...[# x nnnn ]

n       Eq замещает символ «равно» ( = ) с одним или несколькими предшествующими и последующими пробелами (см. конструкцию Eq ). Синтаксис: =

n       AttValue задает значение атрибута (см. конструкцию AttValue ). Синтаксис:

     {“[^<&]]|’[^<&’]]}|[ Reference [ Reference

     [... Reference ]]]{"|'}

Комментарии

Attribute является компонентом конструкций EmptyElemTag и STag .

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

Каждый атрибут содержит два компонента: имя и значение. Пара имя-значение составляет спецификацию атрибута .

Значение атрибута используется для точной настройки элемента. Варьируя значение, вы можете, к примеру, изменить способ отображения содержания: выровнять границы, акцентировать и т. д.

Чтобы XML-документ был хорошо оформленным, каждый атрибут соответствующего элемента — независимо от того, имеет он содержание или нет, — должен быть уникален. При этом требование уникальности на значение атрибута не распространяется.

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

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

Чтобы XML-документ был хорошо оформленным, значения атрибутов этого документа не должны содержать ссылок на внешние единицы и располагаться в пределах внутреннего блока (раздела DTD, находящегося внутри документа-источника).

Используйте элемент AttlistDecl для « точной настройки » элемента, его атрибутов и дочерних элементов.

Символы амперсанта ( & ) и знак «меньше» ( < ) зарезервированы как служебные, в частности, как указатели начала и конца разметки. Для их вывода как самостоятельных символов используйте, соответственно, заменяющие единицы &amp; и &lt; .

Пример

Открывающий тег с двумя атрибутами:

<HITHERE ALIGN="left" ID="abc" >

Родственные конструкции

content , element , EmptyElement , Eq , ETag , STag .

AttType[54] (тип атрибута)

Назначение

Задает тип объявляемого атрибута.

Синтаксис EBNF

AttType ::= StringType | TokenizedType | EnumeratedType

Стандартный синтаксис

StringType | TokenizedType | EnumeratedType

Аргументы

n       StringType определяет данные типа «строка» без ограничений (см. конструкцию StringType ). Синтаксис: CDATA

n       TokenizedType задает, что атрибут элемента представляет собой символьный ряд  (tokenized set), данные типа строка с некоторыми ограничениями (см. конструкцию TokenizedType .) Синтаксис:

     ID|IDREF|IDREFS|ENTITY|ENTITIES|NMTOKEN|NMTOKENS

n       EnumeratedType указывает на одно или больше надлежащим образом перечисленных имен нотаций или компонентов имен (см. конструкцию EnumeratedType .) Синтаксис:

     NotationType | Enumeration

Комментарии

AttType является компонентом конструкции AttDef .

Используйте AttType только в пределах определений типа документов (DTD).

Тип атрибута обеспечивает ввод в XML-документ надлежащих данных, соответствующих критерию состоятельности.

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

Анализаторы хорошо оформленных документов игнорируют типы атрибутов.

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

Пример

Ниже приводятся два типа атрибутов: символьный и строковый, соответственно:

    id    ID      #REQUIRED

    name      CDATA   #IMPLIED

Родственные конструкции

EnumeratedType , StringType , TokenizedType .

AttValue[10] (значение атрибута)

Назначение

Задает значение атрибута.

Синтаксис EBNF

AttValue ::= '"' (^<&"] | Reference)* '"'

           | "'" (^<&'] | Reference)* "'"

Стандартный синтаксис

{"[^<&"]]|'[^<&']]}|[ Reference [ Reference

    [... Reference ]]]{"|'}

Аргументы

n       < , & , " , ' , и ]  — символы, которые не должны включаться в эту конструкцию.

n       Reference означает ссылку на элемент или элемент параметра (см. конструкцию Reference ). Синтаксис:

     & Name ;|&# dec_nums ;|&# xhex_nums ;

Комментарии

AttValue является компонентом конструкций Attribute и DefaultDecl .

Собственно, значение атрибута есть значение атрибута элемента.

Литерал, такой как AttValue , заменяет текущее значение единицы или атрибута.

AttValue поддерживает ссылки на единицы, которые должны начинаться с символа # . Каждая ссылка на единицу (указатель единицы) замещает один символ.

Значение атрибута должно отвечать правилам и ограничениям, установленным для типа, к которому относится атрибут. Так, если тип атрибута — десятичное число, то и значение тоже должно быть десятичным числом. Если же тип — строка, то эта строка должна быть заключена в одиночные или двойные кавычки.

Знаки амперсант ( & ) и «меньше» ( < ) зарезервированы как служебные символы; в частности, как указатели начала и конца разметки. Для их вывода как самостоятельных символов используйте, соответственно, заменяющие единицы &amp; или &lt; .

Если конструкция, строка, элемент или другой объект заключены в одиночные кавычки , то этот тип кавычек не может использоваться внутри этой же конструкции, строки, элемента или другого объекта. Если конструкция, строка, элемент или другой объект заключены в двойные кавычки , то этот тип кавычек не может использоваться внутри этой же конструкции, строки, элемента или другого объекта.

В составе данных типа строка можно использовать символы апострофа ( &apos; ) или кавычек ( &quot; ).

Если в строке использованы одиночные кавычки, рекомендуем заключать ее в двойные кавычки, и наоборот — если в строке использованы двойные кавычки, ее надо заключать в одиночные кавычки.

Не смешивайте одиночные и двойные кавычки; открывающая и закрывающая кавычки вокруг конструкции, строки, элемента или другого объекта должны быть однотипными.

Примеры

Открывающий тег, два его атрибута и их значения:

<HITHERE ALIGN= "left" ID= "abc" >

В следующем примере демонстрируется список атрибутов с его элементом, вариантами значения и значением по умолчанию:

<!ATTLIST PRE_TYPE   xml:space   (default|preserve)

    'preserve' >

Родственные конструкции

Attribute , DefaultDecl , EntityDef , EntityValue , PEDef , PEReference , PubidChar , PubidLiteral , Reference , SystemLiteral .

BaseChar[85] (базовый символ)

Назначение

Назначает базовый символ.

Синтаксис EBNF

BaseChar ::= [#x0041–#x005A] | [#x0061–#x007A]

           | [#x00C0–#x00D6] | [#x00D8–#x00F6]

           | [#x00F8–#x00FF] | [#x0100–#x0131]

           | [#x0134–#x013E] | [#x0141–#x0148]

           | [#x014A–#x017E]

Стандартный синтаксис

#x nnnn

ПРИМЕЧАНИЕ                 Список поддерживаемых базовых символов см. выше в разделе « Синтаксис EBNF » .

Аргумент

#xnnnn представляет собой алфавитный символ, поддерживаемый организацией Unicode. Полный список поддерживаемых базовых символов см. в приложении 2 « Символы и наборы символов Unicode » . Дополнительная информация о символах Unicode приведена в главе 1 « Общие сведения » и приложении 4 « Web–библиография » .

Комментарии

BaseChar является компонентом конструкции Letter .

Родственные конструкции

Char , CharRef , CombiningChar , Digit , EntityRef , Extender , Ideographic , Letter , Name , PEReference , Reference .

CData[20] (символьные данные)

Назначение

Обозначает символьные данные внутри раздела символьных данных.

Синтаксис EBNF

CData ::= (Char* — (Char* ']]>' Char*))

Стандартный синтаксис

[[ Char [ Char [... Char ]]]

Аргумент

Char обозначает один знак символьных данных (см. конструкцию Char ). Синтаксис:

     #x nnnn [ n [ n ]]

Комментарии

CData является компонентом конструкции CDSect .

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

Не путайте конструкцию CData с разделом CDATA (обратите внимание на разные регистры).

Разделы символьных данных указывают на текстовые блоки, которые не являются разметкой XML, но могут быть спутаны с разметкой. Разделы CDATA можно использовать для организации определений типов документов (DTD).

Отметьте начало раздела CDATA строкой <![ CDATA [ , а конец — строкой ]]> . Как видно из этого примера, не следует использовать символы < , [ и ] внутри раздела.

Внутри раздела CDATA допустимы символы амперсант ( & ) и «меньше» ( < ), поскольку эти символы не зарезервированы для какого-либо использования в этом разделе.

Так как знак «больше» ( > ) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Разделы CDATA не могут быть вложенными.

Тип атрибутов CDATA является родственным разделу CDATA ; многие правила одинаково справедливы для обоих.

Пример

Этот пример раздела CDATA можно рассматривать как ответ на типовое приветствие "Hello, world!":

<![CDATA[ <text>Goodbye, cruel world!</text> ]]>

Родственные конструкции

CDEnd , CDSect , CDStart , Char .

CDEnd[21] (конец раздела символьных данных)

Назначение

Обозначает конец раздела символьных данных.

Синтаксис EBNF

CDEnd ::= ']]>'

Стандартный синтаксис

]]>

Аргумент

]]> означает конец раздела символьных данных.

Комментарии

CDEnd является компонентом конструкции CDSect .

Отметьте начало раздела CDATA строкой <![CDATA[ , а конец — строкой ]]> . Как видно из этого примера, не следует использовать символы < , [ , и ] внутри раздела.

Внутри раздела CDATA допустимы символы амперсант ( & ) и знак «меньше» ( < ), поскольку эти символы не зарезервированы для какого-либо использования в этом разделе.

Так как знак «больше» ( > ) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Разделы CDATA не могут быть вложенными.

Пример

Этот пример раздела CDATA можно рассматривать как ответ на типовое приветствие "Hello, world!":

<![CDATA[<text>Goodbye, cruel world!</text>] ]>

Родственные конструкции

CData , CDSect , CDStart .

CDSect[18] (раздел символьных данных)

Назначение

Создает раздел символьных данных: начало, содержание, конец.

Синтаксис EBNF

CDSect ::= CDStart CData CDEnd

Стандартный синтаксис

CDStart CData CDEnd

Аргументы

n       CDStart указывает на начало раздела символьных данных (см. конструкцию CDStart ). Синтаксис:

     <![CDATA[

n       CData обозначает символьные данные внутри раздела символьных данных (см. конструкцию CData ). Синтаксис:

     [[ Char [ Char [... Char ]]]

n       CDEnd означает конец блока символьных данных (см. конструкцию CDEnd ). Синтаксис:

     ]]>

Комментарии

CDSect является компонентом конструкции content .

Можно поместить раздел CDATA в любом из тех мест, где вы могли бы поместить другие символьные данные.

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

Не путайте конструкцию CData с разделом CDATA (обратите внимание на разные регистры).

Разделы символьных данных указывают на текстовые блоки, которые не являются разметкой XML, но могут быть спутаны с разметкой. Разделы CDATA можно использовать для организации определений типов документов (DTD).

Отметьте начало раздела CDATA строкой <![CDATA[ , а конец — строкой ]]> . Как видно из этого примера, не следует использовать символы < , [ , и ] внутри раздела.

Внутри раздела CDATA допустимы символы амперсант ( & ) и знак «меньше» ( < ), поскольку эти символы не зарезервированы для какого-либо использования в этом разделе.

Так как знак «больше» ( > ) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Разделы CDATA не могут быть вложенными.

Пример

Этот пример раздела CDATA можно рассматривать как ответ на типовое приветствие "Hello, world!":

<![CDATA[<text>Goodbye, cruel world!</text>]]>

Родственные конструкции

CData , CDEnd , CDStart .

CDStart[19] (начало символьных данных)

Назначение

Указывает на начало раздела символьных данных.

Синтаксис EBNF

CDStart ::= '<![CDATA['

Стандартный синтаксис

<![CDATA[

Аргумент

<[!CDATA[ отмечает начало раздела символьных данных.

Комментарии

CDStart является компонентом конструкции CDSect .

Отметьте начало раздела CDATA строкой <![CDATA[ , а конец — строкой ]]> . Как видно из этого примера, не следует использовать символы < , [ , и ] внутри раздела.

Дополнительно см. конструкцию CDSect .

Пример

Этот пример раздела CDATA можно рассматривать как ответ на типовое приветствие "Hello, world!":

<![CDATA[ <text>Goodbye, cruel world!</text>]]>

Родственные конструкции

CData , CDEnd , CDSect .

Char[2] (символ)

Назначение

Обозначает один знак символьных данных.

Синтаксис EBNF

Char ::= #x9 | #xA | #xD | [#x20–#xD7FF]

        | [#xE000–#xFFFD]

        | [#x10000–#x10FFFF]

Стандартный синтаксис

#x0009|#x000A|#x000D|[#x0020–#xD7FF]| [#xE000–#xFFFD]

|[#x10000–#x10FFFF]

Аргументы

n       #x9 (код стандарта Unicode #x0009 ) добавляет символ табуляции (HT). Этот управляющий символ перемещает курсор к следующей позиции табулятора.

n       #xA (код стандарта Unicode #x00OA ) добавляет символ начала строки (LF). Этот управляющий символ перемещает курсор к следующей строке на позицию, находящуюся под текущей позицией курсора.

n       #xD (код стандарта Unicode #x00OD ) добавляет символ возврата каретки (CR). Этот управляющий символ перемещает курсор к началу следующей строки.

#x20–#xD7FF , #xE000–#xFFFD и #xl0000–#x10FPFF также являются символами, принятыми организацией Unicode. Полный список поддерживаемых базовых символов см. в приложении 2 « Символы и наборы символов Unicode » . Дополнительная информация о символах Unicode приведена в главе 1 « Общие сведения » и приложении 4 « Web–библиография » .

Комментарии

Char является компонентом конструкций CData , Comment , Ignore и PI .

В качестве символов допускается использование букв, цифр и других символов.

Язык XML требует, чтобы процессоры поддерживали набор символов UTF-8 (по умолчанию) или UTF-16. Процессоры могут также поддерживать дополнительные наборы символов.

Набор символов ASCII является подмножеством UTF-8.

Полный список конструкций символьного класса (то есть, BaseChar , CombiningChar , Digit , Extender , Ideographic и Letter ) см. в приложении 2 « Символы и наборы символов Unicode » . Дополнительная информация о символах Unicode приведена в главе 1 « Общие сведения » и приложении 4 « Web–библиография » .

Родственные конструкции

CData , Comment , Ignore , PI .

CharData[14] (символьные данные)

Назначение

Задает любые символьные данные, не являющиеся знаками разметки.

Синтаксис EBNF

CharData ::= ["<&]* — (["<&]* ']]>' ["<&]*)

Стандартный синтаксис

[[-<&][-<&]...[-<&]]

Аргумент

< и & представляют собой символы, которые не следует включать в конструкции.

Комментарии

CharData является компонентом конструкции content .

Символьные данные подразделяются на текст и знаки разметки. Символьные данные представляют собой текст, когда не являются разметкой.

Не используйте комбинацию символов ]]> в качестве символьных данных внутри раздела CDATA ; эта комбинация зарезервирована и означает конец раздела символьных данных (см. конструкции CData , CDEnd , CDSect и CDStart ).

Символы амперсант ( & ) и знак «меньше» ( < ) зарезервированы как служебные символы; в частности, как указатели начала и конца разметки. Для их вывода как самостоятельных символов используйте, соответственно, заменяющие единицы &amp; и &lt; .

Так как знак «больше» (>) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Пример

Следующий пример представляет собой законченный XML-документ с одной строкой символьных данных:

<?xml version="1.0"?>

<!DOCTYPE endstate[

<!ELEMENT endstate (#PCDATA)>

]>

<endstate> Goodbye, cruel world! </endstate>

Родственная конструкция

content .

CharRef[66] (указатель символа)

Назначение

Обозначает символ из набора ISO/IEC 10646.

Синтаксис EBNF

CharRef ::= '&#’ [0-9]+  ';'

        | '&#x' [0-9a-fA-F]+ ';'

Стандартный синтаксис

&#{0-9[0-9[...0-9]}; [&#x{0-9|a-f|A-F[0-9[a-f|A-F

    [...0-9|a-f|A-F]]};

Аргументы

n       &# отмечает начало шестнадцатеричного кода. Допускаемый диапазон символов — от 0 до 9 и от A до F независимо от регистра.

n       &#x отмечает начало десятичного кода. Допускаемый диапазон символов — от 0 до 9.

n       0–9 представляют собой десятичные или шестнадцатеричные цифры от 0 до 9.

n       a–f и A–F представляют собой шестнадцатеричные цифры a, b, c, d, e и f в нижнем или верхнем регистре;

n       ; завершает часть строки, представляющую собой указатель символа.

Комментарии

CharRef является компонентом конструкции Reference .

Указатель символа также называется непечатаемым или неклавиатурным символом, хотя на некоторых клавиатурах можно встретить используемые в этом качестве знаки.

Указатели символов и единицы могут начинаться с разных символов, но все они оканчиваются символом точка с запятой ( ; ):

n       десятичные указатели символов начинаются с сочетания &# ;

n       шестнадцатеричные указатели символов начинаются с сочетания &#x ;

n       общие разобранные единицы начинаются с символа амперсант ( & );

n       указатели единиц параметров начинаются с символа процент ( % ).

Набор символов ASCII поддерживается версией Unicode UTF-8. Полный список поддерживаемых базовых символов см. в приложении 2 « Символы и наборы символов Unicode » . Дополнительная информация о символах Unicode приведена в главе 1 « Общие сведения » и приложении 4 « Web–библиография » .

Чтобы XML-документ рассматривался как хорошо оформленный, входящие в него знаки, являющиеся символами, должны отвечать правилам, установленным для конструкции Char (см. конструкцию Char ).

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

Символы амперсант ( & ) и знак «меньше» ( < ) зарезервированы как служебные символы; в частности, как указатели начала и конца разметки. Для их вывода как самостоятельных символов используйте, соответственно, заменяющие единицы &amp; и &lt; .

Примеры

Ниже приведены примеры указателей символов:

&#251;

&#x628;&#x631;&#x627;&#x64a;

Родственные конструкции

BaseChar , Char , CombiningChar , Digit , EntityRef , Extender , Ideographic , Letter , Name , PEReference , Reference .

children[47] (содержание дочернего элемента)

Назначение

Определяет содержание дочернего элемента.

Синтаксис EBNF

children ::= (choice | seq) ('?' | '*' | '+' )?

Стандартный синтаксис

{ choice | seg }[?|*|+]

Аргументы

n       choice определяет диапазон выбора частиц содержания (см. конструкцию choice ). Синтаксис:

     ([ ... ] cp [[ ... ]|[ ... ] cp [[ ... ]

     |[ ... ] cp [[ ... ]|[ ... ] cp ]]][ ... ]

n       seq определяет списки последовательностей единиц содержания (см. конструкцию seq ). Синтаксис:

     ([ ... ] cp [[ ... ],[... ] cp ][[ ... ],

     [ ... ] cp ]...[[ ... ],[... ] cp ][ ... ])

n       ? символ, указывающий на то, что конструкция или частица содержания могут встречаться не более одного раза.

n       * символ, указывающий на то, что конструкция или частица содержания могут встречаться неограниченное количество раз

n       + символ, указывающий на то, что конструкция или частица содержания должны встречаться не менее одного раза.

Комментарии

Конструкция children является компонентом конструкции contentspec .

Используйте конструкцию children только в пределах определений типа документов (DTD).

Если символы ? , * , или + отсутствуют, элемент или частица содержания встречаются один раз.

Для получения более полной информации см. комментарии к конструкциям elementdecl и contentspec .

Примеры

В данном примере приводится объявление элемента longdoc , который содержит три элемента:

<!ELEMENT longdoc ( intro, body, index )>

В следующем примере приводится объявление элемента mixedtext , который помимо данных содержит также другой элемент:

<!ELEMENT mixedtext ( #PCDATA|ital )>

Родственные конструкции

choice , contentspec , cp , Name , S , seq .

choice[47] (диапазон выбора)

Назначение

Определяет диапазон выбора частиц содержания.

Синтаксис EBNF

choice ::= '(' S? cp ( S? '|' S? cp )* S?

Стандартный синтаксис

([ ... ] cp [[ ... ]|[ ... ] cp [[ ... ]|[ ... ] cp

[[ ... ]|[ ... ] cp ]]][ ... ]

Аргументы

n       S представляет собой один или несколько разделяющих символов пробела, перевода каретки, начала новой строки или табуляции (см. конструкцию S ). Синтаксис:

     {[#x20|#x9|#xD|#xA][#x20|#x9|#xD|#xA]...

     [#x20|#x9|#xD|#xA]}

n       cp вводит грамматику частиц содержания (см. конструкцию cp ). Синтаксис:

     { Name | choice | seg }[?|*|+]

Комментарии

choice является компонентом конструкций children и cp .

Модели содержания состоят из частиц содержания  (content particles — CPs) , представляющих собой имена типов дочерних элементов, а также диапазонов выбора и списков последовательностей, которые, в свою очередь, являются другими частицами содержания. Это позволяет создавать очень сложные объявления элементного типа, которые должны быть правильно найдены в процессе обработки. Не вызывает сомнений тот факт, что чем сложнее объявление, тем больше ошибок может возникнуть при обработке XML-документа.

Чтобы XML-документ рассматривался как состоятельный, любой замещающий текст элемента PEReference должен быть внедрен в его частицу содержания конструкциями choice , Mixed или seq .

Для получения более полной информации см. комментарии к конструкциям elementdecl и contentspec .

Примеры

В следующем примере приводится объявление элемента mixedtext , который помимо данных содержит также другой элемент:

<!ELEMENT mixedtext ( #PCDATA|ital )>

В следующем примере рассматривается список атрибутов с его элементом, параметрами и значением по умолчанию:

<!ATTLIST PRE_TYPE xml:space( default|preserve )

    'preserve'>

Родственные конструкции

children , contentspec , cp , Name , S , seq .

CombiningChar[87] (комбинированный символ)

Назначение

Задает символ, который в сочетании с другими буквами алфавита и символами обозначает специальное произношение или имеет особое значение.

Синтаксис EBNF

CombiningChar ::= [#x0300-#x0345] | [#x0360-#x0361]

    | [#x0483-#x0486] | [#x0591-#x05A1]

| [#x05A3-#x05B9]

    | [#x05BB-#x05BD] | #x05BF | [#x05C1-#x05C2]

| #x05C4

    | [#x064B-#x0652] | #x0670 | #x06D6-#x06DC]

    | [#x06DD-#x06DF] | [#x06E0-#x06E4]

| [#x06E7-#x06E8]

    | [#x06EA-#x06ED] | [#x0901-#x0903] | #x093C

    | [#x093E-#x094C] | #x094D | [#x0951-#x0954]

    | #x0962-#x0963] | [#x0981-#x0983] | #x09BC

| #x09BE

    | #x09BF | [#x09C0-#x09C4] | [#x09C7-#x09C8]

    | #x09CB-#x09CD] | #x09D7 | [#x09E2-#x09E3]

| #x0A02

    | #x0A3C | #x0A3E | #x0A3F | [#x0A40-#x0A42]

    | [#x0A47-#x0A48] | [#x0A4B-#x0A4D]

| [#x0A70-#x0A71]

    | [#x0A81-#x0A83] | #x0ABC | [#x0ABE-#x0AC5]

    | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD]

| [#x0B01-#x0B03]

    | #x0B3C | [#x0B3E-#x0B43] | [#x0B47-#x0B48]

    | [#x0B4B-#x0B4D] | [#x0B56-#x0B57]

| [#x0B82-#x0B83]

    | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8]

| [#x0BCA-#x0BCD]

    | #x0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44]

    | [#x0C46-#x0C48] | #x0C4A-#x0C4D]

| [#x0C55-#x0C56]

    | [#x0C82-#x0C83] | [#x0CBE-#x0CC4]

| [#x0CC6-#x0CC8]

    | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6]

| [#x0D02-#x0D03]

    | [#x0D3E-#x0D43] | [#x0D46-#x0D48]

| [#x0D4A-#x0D4D]

    | #x0D57 | #x0E31 | [#x0E34-#x0E3A]

| [#x0E47-#x0E4E]

    | #x0EB1 | [#x0EB4-#x0EB9] | [#x0EBB-#x0EBC]

    | [#x0EC8-#x0ECD] | [#x0F18-#x0F19] | #x0F35

| #x0F37

    | #x0F39 | #x0F3E | #x0F3F | [#x0F71-#x0F84]

    | [#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97

    | [#x0F99-#x0FAD] | [#x0FB1-#x0FB7] | #x0FB9

    | [#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F]

| #x3099

    | #x309A

Стандартный синтаксис

#x nnnn

ПРИМЕЧАНИЕ                 Список поддерживаемых базовых символов см. выше в разделе « Синтаксис EBNF » .

Аргумент

#xnnnn представляет собой комбинированный символ, поддерживаемый в наборе символов Unicode. Полный список поддерживаемых базовых символов см. в приложении 2 « Символы и наборы символов Unicode » . Дополнительная информация о символах Unicode приведена в главе 1 « Общие сведения » и приложении 4 « Web–библиография » .

Комментарий

CombiningChar является компонентом конструкции NameChar .

Родственные конструкции

BaseChar , Char , CharRef , Digit , EntityRef , Extender , Ideographic , Letter , Name , PEReference , Reference .

Comment[15] (комментарий)

Назначение

Добавляет непечатаемый и неанализируемый комментарий в XML-документ.

Синтаксис EBNF

Comment ::= '<!--' ((Char – ‘-')

    | ('-‘ (Char – ‘-')))* '-->’

Стандартный синтаксис

<!--[ [ Char ] | [- Char ] [ [ Char ] | [- Char ] ] ... [ [Char]

    |[-Char]]]-->

Аргументы

n       <!-- отмечает начало комментария.

n       Char обозначает один знак символьных данных  (см. конструкцию Char ). Синтаксис:

     #x nnnn [ n [ n ]]

n       --> отмечает конец комментария.

Комментарии

Comment является компонентом конструкций content, markupdecl и Misc .

Не включайте в текст комментария один или два дефиса ( - ); они зарезервированы для обозначения начала и конца комментария.

Комментарии используются для описания разметки; они не влияют на обработку документа и не выводятся на экран.

Не используйте комментарии внутри разделов CDATA или внутри разметки.

Использование комментариев в языке XML имеет больше ограничений, чем в языке SGML: так, в языке SGML комментарии могут употребляться внутри объявлений, а в языке XML это недопустимо. Однако, объявления могут встречаться в комментариях XML в форме комментариев.

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

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

Конструкция Comment аналогична тегу ! языка HTML.

Пример

В следующем примере отмечается начало определения элемента:

<!-- defining <para> paragraph element -->

conditionalSect[61] (условный раздел)

Назначение

Определяет условный раздел, либо включенный (обрабатываемый), либо игнорируемый в процессе обработки.

Синтаксис EBNF

conditionalSect ::= includeSect | ignoreSect

Стандартный синтаксис

includeSect | ignoreSect

Аргументы

n       includeSect обозначает включенный (обрабатываемый) раздел (см. конструкцию includeSect ). Синтаксис:

     <![[ ... ] INCLUDE[ ... ][[ extSubsetDecl ;]

     [ extSubsetDecl ;]...[ extSubsetDecl ;]]]>

n       ignoreSect обозначает условно игнорируемый раздел (см. конструкцию ignoreSect ). Синтаксис:

     <! [ ... ] IGNORE [ ... ][[ ignoreSectContents ]

     [ IgnoreSectContents ] ...[ ignoreSectContents ]]]>

Комментарии

conditionalSect является компонентом конструкции extSubsetDecl .

Используйте conditionalSect только в пределах определений типа документов (DTD).

Условный раздел может включать в себя объявления, комментарии, инструкции по обработке, пробелы и другие условные разделы.

Разработчики языков SGML и XML используют условные разделы при создании анализаторов для определения состоятельности документов и при создании сложных объявлений типа документа (DTD). При создании стандартных DTD необходимости в создании условных разделов нет.

Если вы являетесь опытным разработчиком языка XML, вы можете использовать элементы РEReferences для идентификации и обработки отдельных условных разделов вместо элемента conditionalSect и его компонентов.

Только лишь условные разделы типа INCLUDE (вставленные, т. е. обрабатываемые) « официально » входят в состав DTD; разделы типа IGNORE , и в том числе разделы типа INCLUDE , внедренные в них, не считаются составной частью DTD.

Правильно запрограммированные XML-процессоры должны обрабатывать оба типа разделов — INCLUDE и IGNORE .

Если ключевым словом условного раздела является PEReference , XML-процессор должен заместить его содержание до того, как отдельные условные разделы будут обработаны или проигнорированы.

Условные разделы можно использовать во внешних наборах (частей DTD, хранящихся в отдельном документе, полностью вне документа-источника), но никак не во внутренних (частей DTD, находящихся внутри документа-источника).

Примеры

В следующем примере рассматривается указатель на внешний набор quotes.dtd для документа-источника и несколько дополнительных строк:

<?xml version="1.0"?>

<!DOCTYPE test SYSTEM "quotes.dtd">

<saying>

<para>

A stitch in time saves nine.

</para>

<para>

A fool и his money are soon parted.

</para>

и два элемента, определенных внутри документа quotes.dtd :

<!ELEMENT saying (para*)>

<!ELEMENT para (#PCDATA)>

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

<!ENTITY % hello   'INCLUDE' >

<!ENTITY % goodbye 'IGNORE' >

 

<![%hello; [

<!ELEMENT histate (#PCDATA)>

]]>

 

<![%goodbye; [

<!ELEMENT byestate (#PCDATA)>

]]>

Родственные конструкции

extSubsetDecl , Ignore , ignoreSect , ignoreSectContents , includeSect , S .

content[43] (содержание элемента)

Назначение

Определяет содержание элемента между открывающим и закрывающим тегами.

Синтаксис EBNF

content ::= (element [ CharData | Reference | CDSect |

    PI | Comment)*

Стандартный синтаксис

[ element | CharData | Reference | CDSect |PI | Comment ]

[ element | CharData | Reference | CDSect | PI| Comment ]

... [ element | CharData | Reference | CDSect | PI | Comment ]

Аргументы

n       element определяет элемент XML — с содержимым или без такового (см. конструкцию element ). Синтаксис:

     EmptyElemTag | STag content ETag

n       CharData указывает на символьные данные, не включающие в себя символы разметки (см. конструкцию CharData ). Синтаксис:

     [[^<&]^<&]. .. [^<&]]

n       Reference называет имя единицы или ссылки на единицу параметра (см. конструкцию Reference ). Синтаксис:

     & Name ; | &# dec_nums ; |&# xhex_numns ;

n       CDSect cоздает раздел символьных данных: начало, содержание, конец (см. конструкцию CDSect ). Синтаксис:

     CDStart CData CDEnd

n       PI записывает инструкции по обработке (см. конструкцию PI ). Синтаксис:

     <? PITarget [[ ... ][ Char [ Char ]...[ Char ]]?>

n       Comment добавляет непечатаемый и неанализируемый комментарий в XML-документ (см. конструкцию Comment ). Синтаксис:

     <!--[[ Char ]|[- Char ][[ Char ]|[- Char ]]...

     [[ Char ]|[- Char ]]]-->

Комментарии

content является компонентом конструкций element и extParsedEnt .

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

Внутреннюю общую разобранную единицу можно считать хорошо оформленной, если она идентична ассоциированной с ней конструкции content .

Внешнюю общую разобранную единицу можно считать хорошо оформленной, если она идентична ассоциированной с ней конструкции extParsedEnt .

Символы амперсант ( & ) и знак «меньше» ( < ) зарезервированы как служебные символы; в частности, как указатели начала и конца разметки. Для их вывода как самостоятельных символов используйте, соответственно, заменяющие единицы &amp; и &lt; .

Так как знак «больше» ( > ) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Используйте конструкцию contentspec для точной настройки элемента content .

Примеры

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

<?xml version="1.0"?>

<!DOCTYPE endstate[

<!ELEMENT endstate (#PCDATA)>

]>

<endstate> Goodbye, cruel world! </endstate>

Родственные конструкции

Attribute , content , element , EmptyElement , Eq , ETag , STag .

contentspec[46] (задание типа содержания)

Назначение

Задает тип содержания элемента.

Синтаксис EBNF

contentspec ::= 'EMPTY' | 'ANY' | Mixed | children

Стандартный синтаксис

EMPTY | ANY | Mixed | children

Аргументы

n       EMPTY  — зарезервированное ключевое слово, вводимое только прописными буквами и обозначающее элемент, не имеющий содержания. Закрывающего тега нет; открывающий тег является только маркером.

n       ANY  — зарезервированное ключевое слово, вводимое только прописными буквами и означающее, что текущий элемент может содержать любой другой определенный элемент, включая самого себя.

n       Mixed  — зарезервированное ключевое слово, определяющее элемент и означающее, что текущий элемент может содержать как знаковые данные, так и дочерние элементы (см. конструкцию Mixed ). Синтаксис:

     ([ ... ] #PCDATA[[[ ... ]|[ ... ] Name ][[ ... ]|

     [ ... ] Name ]...[[ ... ]|[ ... ] Name ]]

     [ ... ])*|([ ... ]#PCDATA[ ... ])

n       children является зарезервированным элементом ключевого слова, которое определяет содержание дочернего элемента (см. конструкцию children ). Синтаксис:

     { choice | seg }[?|*|+]

Комментарии

contentspec является компонентом конструкции elementdecl .

Используйте contentspec только в пределах определений типа документов (DTD).

Содержание элемента (element content)  — это один или более дочерних элементов в содержании отдельного типа элемента. Содержание элемента не имеет в своем составе каких-либо символьных данных. Если элемент содержит только дочерние элементы, вы не можете контролировать порядок появления дочерних элементов. При объявлении содержания элемента вы неявно следуете модели содержания , которая устанавливает подходящие типы элементов и порядок их появления в содержании документа. Конструкциями категории модели содержания XML являются children , cp , choice и seq .

Смешанное содержание  (mixed content) определяет содержание элемента как комбинацию содержания элемента и символьных данных.

Ключевое слово ANY допускает любое содержание, если только оно подчиняется правилам и ограничениям языка. ANY представляет собой удобный инструмент преобразования старых SGML- и HTML-документов в соответствии с правилами XML. Чтобы быстро создать DTD для одного из таких документов (т. е. превратить хорошо оформленный документ в состоятельный), определите все типы элементов документа и объявите содержание каждого из них как ANY . В дальнейшем, по мере надобности, вы сможете редактировать каждый тип элемента и его содержание.

Чтобы XML-документ считался состоятельным, должно присутствовать DTD, содержащее объявления элементов. Тогда для каждого типа элемента мы имеем следующее:

n       если объявление элемента содержит ключевое слово EMPTY , элемент является пустым;

n       если объявление элемента содержит ключевое слово ANY , был объявлен как минимум один дочерний элемент и, возможно, текущий элемент;

n       если объявление элемента содержит ключевое слово Mixed , элемент может содержать как символьные данные, так и дочерние элементы;

n       если объявление элемента содержит ключевое слово children , был объявлен как минимум один дочерний элемент.

Чтобы XML-документ считался состоятельным, любой замещающий текст элемента PEReference должен быть полностью внутри конструкции choice , Mixed или seq . Чтобы XML-документ рассматривался как состоятельный, ни один замещающий текст элемента PEReference не может быть пустым и его первый или последний непустые символы не должны быть символом ( | ) или сочетанием символов ( ,) ).

В XML-документе нельзя объявлять один и тот же тип элемента более одного раза. Однако допускается объявлять атрибуты и единицы несколько раз.

Примеры

В следующем примере рассматривается законченный XML-документ с одним объявленным элементом:

<?xml version="1.0"?>

<!DOCTYPE endstate[

<!ELEMENT endstate ( #PCDATA )>

]>

<endstate>Goodbye, cruel world!</endstate>

В следующем примере приводится объявление элемента longdoc , которое содержит три элемента:

<!ELEMENT longdoc ( intro, body, index )>

В следующем примере приводится объявление пустого элемента image :

<!ELEMENT image EMPTY >

Следующий элемент ksink может иметь любое содержание:

<!ELEMENT ksink ANY >

В следующем примере приводится объявление элемента mixedtext , который помимо данных содержит также другой элемент:

<!ELEMENT mixedtext ( #PCDATA|ital )>

Родственные конструкции

children , choice , contentspec , cp , elementdecl , Mixed , Name , S , seq .

cp[46] (грамматика частицы содержания)

Назначение

Определяет грамматику частицы содержания в рамках содержания элемента.

Синтаксис EBNF

cp ::= (Name | choice | seq) ('?'|'*'|'+')?

Стандартный синтаксис

{ Name | choice | seq } [ ? | * | + ]

Аргументы

n       Name задает состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name ). Синтаксис:

     #x nnnn [#x nnnn ][_][:][#x nnnn ]

     |[0|1|2|3|4|5|6|7|8|9][.]|[-]

     [#x nnnn ][#x nnnn ]... [#x nnnn ]

n       choice определяет диапазон выбора частиц содержания (см. конструкцию choice ). Синтаксис:

     ([ ... ] cp [[ ... ]| [ ... ] cp [[ ... ]|[ ... ]

     cp [[ ... ]| [ ... ] cp ]]][ ... ]

n       seq определяет список последовательностей частиц содержания (см. конструкцию seq ). Синтаксис:

     ([ ... ] cp [[ ... ], [ ... ] cp [[ ... ], [ ... ]

     cp [[ ... ], [ ... ] cp [[ ... ])

n       ? символ, указывающий на то, что конструкция или частица содержания может встречаться не более одного раза.

n       * символ, указывающий на то, что конструкция или частица содержания может встречаться неограниченное количество раз.

n       + символ, указывающий на то, что конструкция или частица содержания должна встречаться не менее одного раза.

Комментарии

cp является компонентом конструкций choice и seq .

Если символы ? , * или + отсутствуют, конструкция или частица содержания встречаются однажды.

Модели содержания состоят из частиц содержания  (content particles — CPs) , представляющих собой имена типов дочерних элементов, а также диапазонов выбора и списков последовательностей, которые, в свою очередь, являются другими частицами содержания. Это позволяет создавать очень сложные объявления элементного типа, которые должны быть правильно найдены в процессе обработки. Не вызывает сомнений тот факт, что чем сложнее объявление, тем больше ошибок может возникнуть при обработке XML-документа.

Для получения более полной информации см. комментарии к конструкциям elementdecl и contentspec .

Примеры

В следующем примере рассматривается законченный XML-документ с одним объявленным элементом:

<?xml version="1.0"?>

<!DOCTYPE endstate[

<!ELEMENT endstate ( #PCDATA )>

]>

<endstate>Goodbye, cruel world!</endstate>

В следующем примере приводится объявление элемента longdoc , который содержит три элемента:

<!ELEMENT longdoc ( intro, body, index )>

В следующем примере приводится объявление элемента mixedtext , который помимо данных содержит также другой элемент:

<!ELEMENT mixedtext ( #PCDATA|ital )>

В следующем примере рассматривается список атрибутов с его элементами, параметрами и значением по умолчанию:

<!ATTLIST PRE_TYPE   xml:space   ( default|preserve ) 'preserve’>

Родственные конструкции

children , choice , contentspec , Name , S , seq .

DefaultDecl[60] (объявление значения по умолчанию)

Назначение

Задает, является ли данный атрибут обязательным или необязательным.

Синтаксис EBNF

DefaultDecl ::= ‘#REQUIRED' | '#IMPLIED'

| (('#FIXED' S)? AttValue)

Стандартный синтаксис

#REQUIRED|#IMPLIED|[[#FIXED[ ... ]] AttValue ]

Аргументы

n       #REQUIRED  — набираемое только прописными буквами, представляет собой зарезервированное ключевое слово, указывающее на то, что определенный атрибут должен быть указан.

n       #IMPLIED  — набираемое только прописными буквами, представляет собой зарезервированное ключевое слово, указывающее на то, что определенный атрибут может быть указан.

n       #FIXED  — набираемое только прописными буквами, представляет собой зарезервированное ключевое слово, указывающее на то, что определенный атрибут всегда должен иметь значение атрибута по умолчанию.

n       S представляет собой один или несколько разделяющих символов: знаков пробела, перевода каретки, начала новой строки или табуляции (см. конструкцию S ). Синтаксис:

     {[#x20|#x9|#xD|#xA][#x20|#x9|#xD|#xA]...

     [#x20|#x9|#xD|#xA]}

n       AttValue задает значение атрибута (см. конструкцию AttValue ). Синтаксис:

     {"[^<&"] ] | '[^<&']]} | [ Reference [ Reference

     [ .... Reference ]]]{"|'}

Комментарии

DefaultDecl является компонентом конструкции AttDef .

В предыдущих проектах языка XML компонент DefaultDecl был обозначен как Default (по умолчанию).

Так как ключевые слова #required , #IMPLIED и #FIXED начинаются с символа # , их трудно спутать с именем какого-либо действительного компонента языка XML.

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

Каждый атрибут содержит два компонента: имя и значение. Пара имя-значение составляет спецификацию атрибута .

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

Значение атрибута #FIXED , объявленное для определенного типа элемента, говорит о том, что значение не нужно задавать каждый раз при объявлении типа элемента в XML-документе.

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

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

Чтобы XML-документ был состоятельным, каждый атрибут его элементов должен быть объявлен и соответствовать объявленному типу. Чтобы XML-документ считался состоятельным, где бы ни был указан тип элемента с атрибутом #REQUIRED , наличие атрибута и его значения обязательно.

Чтобы XML-документ считался состоятельным, если задан тип элемента с атрибутом #IMPLIED без указания его значения, XML-процессор должен выдать сообщение об отсутствии значения и продолжить обработку документа.

Чтобы XML-документ считался состоятельным, где бы ни был указан тип элемента отличный от #REQUIRED или #IMPLIED , атрибуту устанавливается значение по умолчанию.

Чтобы XML-документ считался состоятельным, если тип элемента с атрибутом #FIXED имеет значение, отличное от значения по умолчанию, XML-процессор выдает сообщение о критической ошибке.

Чтобы XML-документ считался состоятельным, если для типа элемента с атрибутом #FIXED не указано значение, XML-процессор подставляет его значение по умолчанию.

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

n       замещает или добавляет пробел ( #20 ) к символам конца строки, обработанным символам пробела ( S ), внешним разобранным единицам и внутренним разобранным единицам;

n       замещает каждый указатель единицы соответствующим текстом замещения;

n       добавляет другие символы к обработанным значениям атрибутов;

n       удаляет начальные или конечные пробелы и заменяет два и более расположенных подряд пробела одним.

XML-процессоры, не производящие проверку документов на состоятельность, обрабатывают необъявленные атрибуты таким образом, как если бы последние имели значение CDATA .

Символы амперсант ( & ) и знак «меньше» ( < ) зарезервированы как служебные символы; в частности, как указатели начала и конца разметки. Для их вывода как самостоятельных символов используйте, соответственно, заменяющие единицы &amp; или &lt; .

Примеры

В этом примере рассматриваются два значения атрибута по умолчанию:

id      D      #REQUIRED

name    CDATA  #IMPLIED

В следующем примере элемент HTML FORM имеет атрибут method :

method  (GET|POST)   GET

Родственные конструкции

AttDef , AttValue , S .

Digit[88] (цифра)

Назначение

Определяет цифру.

Синтаксис EBNF

Digit ::= [#x0030-#x0039] | [#x0660-#x0669]

| [#x06F0-#x06F9] | [#x0966-#x096F] |

[#x09E6-#x09EF]

| [#x0A66-#x0A6F] | [#x0AE6-#x0AEF] |

[#x0B66-#x0B6F]

| [#x0BE7-#x0BEF] | [#x0C66-#x0C6F] |

[#x0CE6-#x0CEF]

| [#x0D66-#x0D6F] | [#x0E50-#x0E59] |

[#x0ED0-#x0ED9]

| [#x0F20-#x0F29]

Стандартный синтаксис

#x nnnn

ПРИМЕЧАНИЕ                 Список поддерживаемых базовых символов см. выше в разделе « Синтаксис EBNF » .

Аргумент

#xnnnn представляет собой цифру стандарта Unicode. Полный список поддерживаемых базовых символов см. в приложении 2 « Символы и наборы символов Unicode » . Дополнительная информация о символах Unicode приведена в главе 1 « Общие сведения » и приложении 4 « Web–библиография » .

Комментарии

Digit является компонентом конструкций Instance , Length , NameChar и Position .

Родственные конструкции

BaseChar , Char , CharRef , CombiningChar , EntityRef , Extender , Ideographic , Letter , Name , PEReference , Reference .

doctypedecl[28] (объявление типа документа)

Назначение

Задает объявление типа документа для XML-документа ( doctype ).

Синтаксис EBNF

doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?

('[' (markupdecl | PEReference | S)* ']' S?)? '>'

Стандартный синтаксис

<!DOCTYPE[ ... ] Name [[ ... ] ExternalID ][ ...]

[[ markupdecl | PEReference |[ ... ][[ markupdecl

| PEReference | [ ... ]... [ [ markupdecl | PEReference

|[ ... ]][ ... ]>

Аргументы

n       <!DOCTYPE , набранное только прописными буквами, является ключевым словом, которое указывает на начало объявления типа документа.

n       S представляет собой один или несколько разделяющих символов: знаков пробела, перевода каретки, начала новой строки или табуляции (см. конструкцию S ). Синтаксис:

     {[#x201#x9|#xD|#xA][#x20|#x91#xD|#xA]...

     [#x20|#x9|#xD|#xA]}

n       Name определяет состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name ). Синтаксис:

     #x nnnn [#x nnnn ][_][:][#x nnnn ]

     |[0|1|2|3|4|5|6|7|8|9][.]|[-][#x nnnn ][#x nnnn ]...

     [#x nnnn ]

n       ExternalID служит для именования разобранной внешней единицы (см. конструкцию ExternalID ). Синтаксис:

     SYSTEM [ ... ] SystemLiteral

     |PUBLIC[ ... ] PubidLiteral [ ... ] SystemLiteral

n       [ указывает на начало объявления разметки или указателя единицы параметра.

n       markupdecl объявляет разметку элементов, атрибутов, единиц или тела документа (см. конструкцию markupdecl ). Синтаксис:

     elementdecl | AttIistDecl | EntityDecl

     | NotationDecl | PI | Comment

n       PEReference идентифицирует указатель параметра (см. конструкцию PEReference ). Синтаксис:

     %Name;

n       ] указывает на конец объявления разметки или указателя единицы параметра.

n       > указывает на конец объявления типа документа.

Комментарии

doctypedecl является компонентом конструкции prolog .

Объявление типа документа должно предшествовать любым открывающим тегам XML-документа.

Чтобы XML-документ считался состоятельным, требуется объявление <!DOCTYPE ; в противном случае, самое большее, чего можно ожидать от документа, это то, что он будет хорошо оформленным.

Объявление типа документа может указывать как на внешний блок  (внешнюю разобранную единицу — часть DTD, хранящуюся в отдельном документе, не входящем в состав документа-источника), так и на внутренний блок  (часть DTD, находящуюся внутри документа-источника), каждый или оба из которых могут содержать в себе объявления разметки, определяющие грамматику XML, атрибуты и ограничения для одного или большего количества документов, включая текущий. Эта грамматика известна как определение типа документа (DTD). Заметьте, что объявления типа документа никогда не называются DTD.

Чтобы XML-документ считался состоятельным, каждый тип документа предварительно должен быть объявлен в DTD.

Определение типа документа DTD может находиться во внутреннем блоке (части DTD внутри документа-источника). В этом случае, DTD является локальным. При этом сохранение DTD отдельно, во внешнем блоке, является более предпочтительным, так как может использоваться многими документами.

В первую очередь обрабатываются единицы параметров, что приводит к подстановке замещающего текста в объявлениях разметки.

Если XML-документ ассоциирован с DTD, состоятельность для него не является обязательным условием. Например, допускается использование XML-процессора, не определяющего состоятельность документа; этот процессор не требуется и для чтения внешних блоков (частей DTD, хранящихся вне документа-источника).

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

Так как знак «больше» ( > ) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Примеры

В этом примере задается внутренний блок:

<?xml version="1.0"?>

<!DOCTYPE endstate[

<!ELEMENT endstate (#PCDATA)>

]>

<endstate>Goodbye, cruel world!</endstate>

В следующем примере задается внешний блок — файл goodbye.dtd :

<?xml version="1.0"?>

<!DOCTYPE endstate SYSTEM "goodbye.dtd">

<endstate>Goodbye, cruel world!</endstate>

Родственные конструкции

document , ExternalID , markupdecl , Name , PEReference , prolog , S .

document[1] (имя документа)

Назначение

Создает текущий документ.

Синтаксис EBNF

document ::= prolog element Misc*

Стандартный синтаксис

prolog element [ Misc [ Misc [ ... Misc ] ] ]

Аргументы

n       prolog описывает в общем виде XML-документ  (см. конструкцию prolog ). Синтаксис:

     [ XMLDecl ][[ Misc ][ Misc ]...[ Misc ]][ doctypedecl [

     [Mi s c][ Misc ]...[ Misc ]]]

n       element определяет элемент XML — с содержимым или без такового (см. конструкцию element ). Синтаксис:

     EmptyElemTag | STag content ETag

n       Misc помещает в prolog информацию разного рода (см. конструкцию Misc ). Синтаксис:

     Comment | PI | [ ... ]

Комментарии

Этот элемент определяет текущий документ, в том числе версию XML, использованную при создании документа.

Хотя Misc позволяет вставлять комментарии, инструкции по обработке и пробелы в конструкции документа, следует быть внимательным к синтаксису — это залог того, что ссылки будут работать правильно, а XML-процессор правильно интерпретирует конструкции XML.

XML-документ должен иметь хотя бы один корневой элемент или элемент документа, который является родительским по отношению ко всем остальным элементам документа.

Единица документа  представляет собой весь XML-документ в том виде, в каком он будет прочтен XML-процессором, не проверяющим документ на состоятельность. В этом ее отличие от модуля документа , который представляет собой часть документа, передаваемую по сети.

Чтобы XML-документ считался хорошо оформленным, единица документа должна соответствовать конструкции document .

Примеры

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

<?xml version="1.0"?>

<!DOCTYPE endstate[

<!ELEMENT endstate (#PCDATA)>

]>

<endstate>Goodbye, cruel world!</endstate>

В этом примере рассматривается XML-документ с внешним DTD:

<?xml version="1.0"?>

<!DOCTYPE endstate SYSTEM "goodbye.dtd">

<endstate>Goodbye, cruel world!</endstate>

Родственные конструкции

Misc , prolog , Versionlnfo , XMLDecl .

element[39] (элемент)

Назначение

Определяет элемент XML — с содержимым или без такового.

Синтаксис EBNF

element ::= EmptyElemTag | STag content ETag

Стандартный синтаксис

EmptyElemTag | STag content ETag

Аргументы

n       EmptyElemTag указывает на тег пустого элемента (см. конструкцию EmptyElemTag ). Синтаксис:

     {< Name [ [ ... ] Attribute ][[ ... ]

     Attrubute ]...[[ ... ] Attribute ]]}[ ... ]{/>}

n       STag обозначает открывающий тег элемента XML  (см. конструкцию STag ). Синтаксис:

     < Name [ [[ ... ] Attribute ][[ ... ]

     Attribute ]...[[ ... ] Attribute ]]][ ... ]>

n       content создает содержание элемента внутри открывающего и закрывающего тегов (см. конструкцию content ). Синтаксис:

     [element|CharData|Reference|CDSect|PI

     |Comment][element|CharData|Reference|CDSect

    | PI | Comment ]...[ element | CharData | Reference

     | CDSect | PI | Comment ]

n       ETag обозначает закрывающий тег элемента XML (см. конструкцию ETag ). Синтаксис:

     </ Name [ ... ]>

Комментарии

element является компонентом конструкций content и document .

XML-документ должен иметь хотя бы один элемент.

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

Тип элемента  (element type) , или общий идентификатор (GI), является именем, находящимся между символом, открывающим тег, и символом, закрывающим тег. Например, в тегах <speech> и </speech> слово speech представляет собой тип элемента. В следующем списке HTML:

<UL>

<LI>Beatles</LI>

<LI>Rolling Stones</LI>

<LI>Elvis</LI>

</UL>

содержатся пять элементов (каждое вхождение пар <UL> , <LI> и </UL> , </LI> ) и два типа элементов ( <UL>/</UL> и <LI>/</LI> ).

Типы элементов с содержимым имеют открывающие теги (см. элемент STag ) и закрывающие теги (см. конструкцию ETag ); пустые элементы имеют теги пустых элементов (см. конструкцию EmptyElemTag ).

Чтобы XML-документ считался хорошо оформленным, для открывающего и закрывающего тегов должно быть указано одно и то же имя конкретного типа элемента.

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

Чтобы XML-документ считался состоятельным, каждый тип элемента должен быть предварительно объявлен в DTD.

Чтобы XML-документ считался состоятельным, элементы должны быть объявлены и:

n       если объявление элемента содержит ключевое слово EMPTY , элемент является пустым (см. конструкцию contentspec );

n       если объявление элемента содержит ключевое слово ANY , значит, хотя бы один дочерний и, возможно, текущий элемент объявлены (см. конструкцию contentspec );

n       если объявление элемента содержит ключевое слово Mixed , элемент может содержать как символьные данные, так и дочерние элементы (см. конструкции contentspec и Mixed );

n       если объявление элемента содержит ключевое слово children , значит, хотя бы один дочерний элемент объявлен (см. конструкции contentspec и children ).

Так как знак «больше» ( > ) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Используйте конструкцию elementdecl для точной настройки элемента, его атрибутов и дочерних элементов.

Примеры

В этом примере рассматривается законченный XML-документ с одним объявленным элементом:

<?xml version="1.0"?>

<!DOCTYPE endstate[

<!ELEMENT endstate (#PCDATA)>

]>

<endstate>Goodbye, cruel world!</endstate>

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

<IMG align="left" id="bighome"

src="bighouse.GIF"></IMG>

<br></br>

</br>

Родственные конструкции

content , document , EmptyElemTag , Eq , ETag , STag .

elementdecl[45] (объявление типа элемента)

Назначение

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

Синтаксис EBNF

elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'

Стандартный синтаксис

{<!ELEMENT[ ... ] Name [...] contentspec }[ ... ]{>}

Аргументы

n       Словосочетание <!ELEMENT , набранное только прописными буквами, является ключевым словом, отмечающим начало объявления типа элемента.

n       S представляет собой один или несколько разделяющих символов: знаков пробела, перевода каретки, начала новой строки или табуляции (см. конструкцию S ). Синтаксис:

     {[#x20|#x9|#xD|#xA][#x20|#x9|#xD|#xA]...[#x20|#x9

     |#xD|#xA]}

n       Name задает состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name ). Синтаксис:

     #x nnnn [#x nnnn ][_][:][#x nnnn ]|[0|l|2|3|4|5

     |6|7|8|9][.]|[-][#x nnnn ][#x nnnn ]...[#x nnnn ]

n       contentspec означает тип содержания элемента (см. конструкцию contentspec ). Синтаксис:

     EMPTY|ANY| Mixed | children

n       > отмечает конец объявления типа элемента.

Комментарии

elementdecl является компонентом конструкции markupdecl .

Используйте elementdecl только в пределах определений типа документов (DTD).

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

Проще говоря, содержание элемента  — это один или более дочерних элементов в содержании конкретного типа элемента. Содержание элемента не имеет в своем составе каких-либо символьных данных. Если элемент содержит только дочерние элементы, вы не можете контролировать порядок появления дочерних элементов. При объявлении содержания элемента вы неявно следуете модели содержания , которая устанавливает подходящие типы элементов и порядок их появления в содержании документа. Конструкциями модели содержания XML являются children , cp , choice и seq .

Смешанное содержание   (mixed content) определяет как содержание элемента, так и элемент и символьные данные вместе.

В XML-документе нельзя объявлять один и тот же тип элемента более одного раза. Однако вы можете объявлять атрибуты и единицы несколько раз.

Так как знак «больше» ( > ) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Примеры

В данном примере рассматривается законченный XML-документ с одним объявленным элементом:

<?xml version="1.0"?>

<1DOCTYPE endstate[

<!ELEMENT endstate (#PCDATA)>

]>

<endstate>Goodbye, cruel world!</endstate>

В следующем примере приводится объявление элемента longdoc , который содержит последовательность трех элементов:

<!ELEMENT longdoc (intro, body, index)>

В следующем примере приводится объявление элемента longdoc , который предлагает выбор из трех элементов:

<!ELEMENT longdoc (intro|body|index)>

В следующем примере приводится объявление пустого элемента image :

<!ELEMENT image EMPTY>

Элемент ksink может иметь любое содержание:

<!ELEMENT ksink ANY>

В следующем примере приводится объявление элемента mixedtext , который помимо данных может содержать и другой элемент:

<!ELEMENT mixedtext (#PCDATA|ital)>

В следующем примере приводится объявление элемента mixedtext , который помимо данных может содержать также два указателя параметров:

<!ELEMENT mixedtext (#PCDATA|%typeface;|%pointsize;)>

В этом примере, взятом из языка Math Markup Language, объявляется пустой элемент EQ :

<!ELEMENT EQ      EMPTY  >

Родственные конструкции

children , choice , contentspec , cp , Mixed , Name , S , seq .

EmptyElemTag[44] (тег пустого элемента)

Назначение

Указывает на пустой элемент.

Синтаксис EBNF

EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'

Стандартный синтаксис

{<Name [[ ... ] Attrubute ][[ ... ] Attrlbute ]

...[[ ... ] Attribute ]]}[ ... ]{/>}

Аргументы

n       < отмечает начало тега пустого элемента.

n       Name задает состоятельное имя XML, начинающееся с буквы или знака подчеркивания (см. конструкцию Name ). Синтаксис:

     #x nnnn [#x nnnn ][_][:][#x nnnn ]|[0|l|2|3|4|5|6

     |7|8|9][.]|[-][#x nnnn ] [#x nnnn ]... [#x nnnn ]

n       S представляет собой один или несколько разделяющих символов: знаков пробела, перевода каретки, начала новой строки или табуляции (см. конструкцию S ). Синтаксис:

     {[#x20|#x9|#xD|#xA][#x20|#x9|#xD|#xA]...[#x20

     |#x9|#xD|#xA]}

n       Attribute определяет атрибут, используемый для выбора элемента (см. конструкцию Attribute ). Синтаксис:

     Name [ ... ] =[ ... ] AttValue

n       /> отмечает конец тега пустого элемента.

Комментарии

EmptyElemTag является компонентом конструкции element .

В более ранних версиях языка XML, конструкция EmptyElemTag называлась EmptyElement .

Тег пустого элемента отмечает место, где в дальнейшем, при выводе документа, будет находиться какой-нибудь объект, например рисунок или конец строки. В отличии от него, непустой элемент имеет содержание, которое будет являться составной частью выводимого документа.

Пустой элемент можно пометить следующим образом:

n       вставьте в документ открывающий тег и сразу после него закрывающий тег;

n       объявите его, используя конструкцию EmptyElemTag ;

n       объявите любой элемент пустым ( EMPTY ), используя конструкцию contentspec .

Чтобы XML-документы правильно отображались на всех компьютерных платформах, используйте конструкцию EmptyElemTag для всех элементов, объявленных пустыми ( EMPTY ).

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

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

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

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

Чтобы XML-документ был хорошо оформленным, значения атрибутов этого документа не должны содержать ссылок на внешние единицы и располагаться в пределах внутреннего блока (раздела DTD, находящегося внутри документа-источника).

Знак «меньше» ( < ) зарезервирован, в том числе, для указания начала разметки; для его вывода как самостоятельного символа используется заменяющая единица &lt; .

Так как знак «больше» ( > ) зарезервирован в качестве закрывающего ограничителя, для его вывода как самостоятельного символа используется заменяющая единица &gt; .

Примеры

В этих примерах рассматриваются некоторые пустые элементы:

<IMG align="left" id="bighome"

src="bighouse.GIF"></IMG>

<br></br>

</br>

Родственные конструкции

Attribute , content , element , EmptyElement , ETag , Eq , STag .

EncName[81] (имя кодировки)

Назначение

Задает имя кодировки.

Синтаксис EBNF

EncName ::= [A—Za—z] ([A—Za—zO-9._] | '-')*

Стандартный синтаксис

{ [A—Z|a—z]}[[A—Z|a—z|0-9|.|_]|-][[A—Z|a—z|0-9|.|_]|-]

...[[A-z|a—z|o-9|.|_]|-]

Аргументы

n       a—z и A—Z представляют собой прописные и строчные буквы — с первой по последнюю — текущего алфавита.

n       0—9 являются цифрами от 0 до 9.

n       . (точка), _ (символ подчеркивания) и - (дефис) являются поддерживаемыми символами.

Комментарии

EncName является компонентом конструкции EncodingDecl . Компонент EncName поддерживает кодировки:

n       UTF-8, UTF-16, ISO-10646-UCS-2 и ISO-106046-UCS-4 для набора символов Unicode и ISO/IEC 10646;

n       ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8 и ISO-8859-9 для набора символов IS08859;

n       ISO-2022-P, Shift_JIS, и EUC-P для набора символов JIS X-0208-1997;

n       Кодировки, зарегистрированные в IANA (Полномочный комитет по надзору за присвоением номеров Интернета — Internet Assigned Numbers Authority), можно найти по адресу http://www.iana.org .

Имена, зарегистрированные в IANA, не зависят от регистра. Для получения более полной информации об объявлении кодировок см. комментарии к конструкции EncodingDecl .

Пример

В этом примере приводится объявление кодировки ISO-8859-1 (Latin-1):

<?xml version="1.0" encoding="ISO-8859-1 "?>

Родственные конструкции

EncodingDecl , Eq , S , TextDecl , XMLDecl .

EncodingDecl[80] (объявление кодировки)

Назначение

Объявляет имя кодировки.

Синтаксис EBNF

EncodingDecl ::= S 'encoding' Eq ('"' EncName ‘"’

    | '"’ EncName "'" )

Стандартный синтаксис

[ ... ]encoding = {"|'} EncName {"|'}

Аргументы

n       S представляет собой один или несколько разделяющих символов: знаков пробела, перевода каретки, начала новой строки или табуляции (см. конструкцию S ). Синтаксис:

     {[#x20|#x9|#xD|#xA][#x20|#x9|#xD|#xA]

     ...[#x20|#x9|#xD|#xA]}

n       encoding является зарезервированным словом, указывающим на то, что далее следует имя кодировки.

n       Eq замещает символ « равно » ( = ) с одним или несколькими предшествующими и последующими пробелами (см. конструкцию Eq ). Синтаксис: =

n       EncName задает имя кодировки (см. конструкцию EncName ). Синтаксис:

     {[A—Z|a—z]}[[A—Z|a—z|0-9|.|_]|-]

     [[A—Z|a—z|0-9|.|_]|-]...[[A—Z|a—z|0-9|.|_|-]

Комментарии

EncodingDecl является компонентом конструкций TextDecl и XMLDecl .

Язык XML требует, чтобы процессоры поддерживали набор символов UTF-8 (по умолчанию) или UTF-16. Процессоры могут поддерживать и другие символьные коды.

Набор символов ASCII является подмножеством UTF-8.

Последовательности, представленные в UTF-16, должны начинаться с маркера порядка байтов #FEFF , означающего неразрывный пробел нулевой длины и служащего для отделения их от символов, представленных в UTF-8. Каждая внешняя разобранная единица может иметь собственную кодировку.

Если внешняя разобранная единица представлена кодировкой, отличной от UTF-8 или UTF-16, она должна иметь открывающую конструкцию TextDecl , а внутри нее — конструкцию EncodingDecl .

В состав состоятельных конструкций EncName входят следующие кодировки:

n       UTF-8, UTF-16, ISO-10646-UCS-2 и ISO-106046-UCS-4 для набора символов Unicode и ISO/IEC 10646;

n       ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8 и ISO-8859-9 для набора символов IS08859;

n       ISO-2022-