Чтение онлайн

на главную - закладки

Жанры

Технология XSLT

Валиков Алексей Н.

Шрифт:

Следующей простейшей символьной конструкцией является пробельное пространство

S
. Приведем еще раз его продукцию:

[3] S ::= (#х9 | #хА | #xD | #x20)+

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

NameChar
:

[4] NameChar ::= Letter | Digit | CombiningChar | Extender

| '.' | '-' | '_' | ':'

Имя

начинается либо буквой, либо символами "
_
" или "
:
" и состоит из последовательности именных символов:

[5] Name ::= (Letter | '_' | ' :') (NameChar*)

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

Names
:

[6] Names ::= Name (S Name)*

Кроме того, техническая рекомендация определяет так называемый именной токен

NmToken
— строку, которая может состоять из одного или более именных символов и последовательности таких токенов,
NmTokens
.

[7] NmToken ::= (NameChar)+

[8] NmTokens ::= NmToken (S NmToken)*

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

EntityValue
), значение атрибута (
AttValue
), системный литерал (
SystemLiteral
), а также
PubidLiteral
— литерал, определяющий публичный идентификатор ресурса (см. раздел "Определение сущности" данной главы):

[9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'

| "'" ([^%&'] | PEReference | Reference)* "'"

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

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

[11] SystemLiteral ::= ('"' [^"]* '"')

| ("'" [^']* "'")

[12] PubidLiteral ::= '"' PubidChar* '"'

| "'" (PubidChar - "'")*

[13] PubidChar ::= #x20 | #xD | #xA

| [a-zA-Z0-9] | [-'+,./:=?;!*#@$_%]

В литералах

EntityValue
и
AttValue
допустимо использовать продукции сущностей (
PEReference
,
Reference
). Это означает, что при определении значений сущностей и атрибутов можно использовать ссылки на сущности, например, в элементе заданном как:

<song title="Крейсер &quot;Aвpopa&quot; "/>

атрибут

title
имеет значение крейсер
"Аврора"
.
Двойные кавычки были определены посредством встроенных сущностей.

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

CharData
, могут состоять из любых символов, кроме символов "
<
" и "
&
", которые используются в XML в качестве управляющих.
CharData
главным образом используется в секциях
CDATA
, и, соответственно, не может содержать терминирующую последовательность "
]]>
".

[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)

XML-документы с точки зрения спецификации

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

document
:

[1] document ::= prolog element Misc

Итак, XML-документ состоит из пролога, единственного корневого элемента и дополнительного нетерминала

Misc
, который может включать инструкции по обработке, комментарии и пробельные символы:

[27] Misc ::= Comment | PI | S

Остановимся отдельно на прологе XML-документа. Пролог состоит из необязательной декларации XML (

XMLDecl
), необязательной декларации типа документа (
doctypedecl
), инструкций, комментариев и пробельных символов:

[22] prolog ::= XMLDeci? Misc* (doctypedecl Misc*)?

В зависимости от того, насколько строго документы соответствуют спецификации XML и собственным DTD-объявлениям, они могут быть хорошо оформленными (well-formed) и правильными (valid).

Хорошо оформленный документ соответствует всем синтаксическим правилам XML и некоторым дополнительным ограничениям, например:

□ имя открывающего тега элемента должно совпадать с именем его закрывающего тега;

□ имена атрибутов элемента не должны повторяться;

□ в значении атрибута нельзя использовать символ "

<
". Этот символ должен обязательным образом заменяться на сущность;

□ сущности должны быть определены до использования;

□ сущности-параметры могут быть использованы только в блоках DTD;

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

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

Поделиться:
Популярные книги

Сын Тишайшего 5

Яманов Александр
5. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
7.50
рейтинг книги
Сын Тишайшего 5

Один на миллион. Трилогия

Земляной Андрей Борисович
Один на миллион
Фантастика:
боевая фантастика
8.95
рейтинг книги
Один на миллион. Трилогия

Черный Маг Императора 4

Герда Александр
4. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 4

Идеальный мир для Лекаря 14

Сапфир Олег
14. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 14

Имя нам Легион. Том 14

Дорничев Дмитрий
14. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
фантастика: прочее
5.00
рейтинг книги
Имя нам Легион. Том 14

Барон Дубов

Карелин Сергей Витальевич
1. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов

Темный Лекарь 11

Токсик Саша
11. Темный Лекарь
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Темный Лекарь 11

Сирийский рубеж

Дорин Михаил
5. Рубеж
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сирийский рубеж

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

Кукловод

Злобин Михаил
2. О чем молчат могилы
Фантастика:
боевая фантастика
8.50
рейтинг книги
Кукловод

Проводник

Кораблев Родион
2. Другая сторона
Фантастика:
боевая фантастика
рпг
7.41
рейтинг книги
Проводник

Тот самый сантехник. Трилогия

Мазур Степан Александрович
Тот самый сантехник
Приключения:
прочие приключения
5.00
рейтинг книги
Тот самый сантехник. Трилогия

Господин следователь. Книга 4

Шалашов Евгений Васильевич
4. Господин следователь
Детективы:
исторические детективы
5.00
рейтинг книги
Господин следователь. Книга 4