Алексей Валиков - Технология XSLT
- Название:Технология XSLT
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2002
- Город:Санкт-Петербург
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Валиков - Технология XSLT краткое содержание
Книга посвящена разработке приложений для преобразования XML-документов с использованием XSLT — расширяемого языка стилей для преобразований. Обсуждается применение языков XSLT и XPath в решении практических задач: выводу документов в формате HTML, использованию различных кодировок для интернационализации и, в частности, русификации приложений, вопросам эффективности существующих подходов для решения проблем преобразования. Для иллюстрации материала используется большое количество примеров.
Для начинающих и профессиональных программистов
Технология XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Расширенные имена считаются совпадающими, если их локальные части равны и, при этом, они относятся к одному пространству имен.
Префикс в расширенном имени может быть опущен. В таком случае идентификатор пространства имен будет либо выбран по умолчанию (если имеется соответствующее объявление), либо будет нулевым.
Для описания имен элементов и атрибутов, которые должны иметь расширенное представление, используется продукция QName
:
[NS6] QName ::= (Prefix ':')? LocalPart
Нетерминалу Prefix
соответствует префикс имени, который может быть опущен вместе со следующим за ним разделяющим двоеточием, LocalPart
соответствует локальной части имени.
[NS7] Prefix ::= NCName
[NS8] LocalPart ::= NCName
Структура XML-документа
В погоне за выразительной мощностью XML не следует забывать один из основополагающих принципов — нужно не просто выражать информацию, нужно выражать ее стандартным образом. Это включает в себя не только синтаксические принципы разметки текста, изложенные выше, но и ограничения, накладываемые на логическую структуру документов. Изобретая свой собственный набор элементов и атрибутов, мы вместе с этим набором изобретаем логический формат, а именно то, каким образом элементы и атрибуты должны формировать документ, какая информация должна присутствовать обязательно, а какая является опциональной, какие данные должны содержать те или иные атрибуты и элементы.
В первой версии XML для определения логической структуры документов использовался набор формальных правил, называемый DTD — декларацией типа документа (document type declaration). Помимо этого, в начале мая 2001 года была принята новая техническая рекомендация языка под названием XML-схема (XML Schema), которая также формально задает логическую структуру документа, определяет используемые типы данных, количество повторений и многое другое.
В этой главе мы разберем основы логического построения ХМL-документов с использованием DTD.
Декларация типа документа (DTD)
Декларация типа документа состоит из одного или нескольких правил-ограничений структуры документа. В частности, DTD позволяет задавать следующие правила:
□ ELEMENT
— определение элемента;
□ ATTLIST
— определение списка атрибутов элемента;
□ ENTITY
— определение сущности;
□ NOTATION
— определение нотации.
Эти определения могут быть заданы с использованием конструкции DOCTYPE
непосредственно в документе:
Другой возможностью определения декларации документа является использование внешнего файла:
В этом случае можно также дополнять внешние определения внутренними:
Декларация типа документа определяется следующей EBNF-продукцией:
[28] doctypedecl ::= '
('[' (markupdecl | DeclSep)* ']' S?)? '>'
Имя, соответствующее продукции Name
, которая идет следом за ключевым словом DOCTYPE
, определяет имя корневого элемента ХМL-документа. В предыдущем примере в корне документа должен стоять элемент advert
.
Выражение (S ExternalID) ?
указывает на то, что декларация типа документа может указываться во внешнем источнике (например, в файле), который описывается внешним идентификатором ExternalID
.
[75] ExternalID ::= 'SYSTEM' S SystemLiteral
| 'PUBLIC' S PubidLiteral S SystemLiteral
В случае системного идентификатора ( "SYSTEM"
), SystemLiteral
определяет URI определения типа документа. В случае публичного идентификатора, к этому параметру добавляется PubidLiteral
, сообщающий дополнительную информацию о ресурсе. Обрабатывающее программное обеспечение может включать в себя DTD для заданного публичного идентификатора. Например, документы, написанные на языке XHTML, должны начинаться следующим объявлением:
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
Программа, обрабатывающая документ с таким заголовком, сможет по публичному идентификатору понять, что документ создан на языке XHTML, а значит, обрабатывать его нужно в соответствии со стандартом этого языка. Если же обрабатывающая программа не в курсе определений XHTML, она сможет загрузить декларацию типа по адресу http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd. Публичные идентификаторы, как правило, используются в языках, получающих широкое распространение, поскольку в этом случае формат логической структуры будет известен и без загрузки DTD.
Выражение ('[' (markupdecl | DeclSep) * ']' S?) ?
в продукции doctypedecl
означает, что в декларации типа документа в квадратных скобках может содержаться последовательность нетерминалов markupdecl
и DeclSep
.
Первый из этих нетерминалов, markupdecl
, показывает, определения какого вида содержатся в DTD:
[29] markupdecl ::= elementdecl
| AttlistDecl
| EntityDecl
| NotationDecl
| PI
| Comment
С правилами PI
и Comment
мы уже знакомы — в данной продукции они показывают, что в DTD также можно использовать инструкции по обработке и комментарии.
Нетерминалы elementdecl
, AttlistDecl
, EntityDecl
и NotationDecl
соответствуют определениям элемента, списка атрибутов, сущности и нотации. Они будут подробно разобраны в следующих четырех разделах.
Нетерминал DeclSep
соответствует разделителю объявлений, которые перечисляются в DTD. Этот разделитель может быть либо пробельным пространством, либо параметризованной сущностью:
[28а] DeclSep ::= PEReference | S
В случае, если определения в DTD разделяются сущностью-параметром, ее содержимое интерпретируется как обычные определения вида markupdecl
.
Определение элемента
Определение элемента задает имя и тип содержимого элемента в следующем виде:
Имя элемента должно начинаться с буквы, подчеркивания (" _
") или двоеточия (" :
") и содержать буквы, цифры, некоторые знаки пунктуации (такие, как " _
" — подчеркивание, " :
" — двоеточие, " .
" — точка, " -
" — тире или знак минуса) и модифицирующие символы ( см. разд. "Базовые продукции ХМL" данной главы ).
Примером имени элемента может быть " A
", " B:12
", " MyEasyName
", " doc.xml
".
В качестве содержимого элемента может быть указано:
□ EMPTY
, в случае, когда элемент обязан быть пустым;
□ ANY
, в случае, когда элемент может содержать что угодно;
□ формальное правило, определяющее элементы, и данные, которые может содержать элемент, а также порядок их следования.
Первые два случая определения элемента довольно просты. Их использование может быть продемонстрировано на следующем примере:
Декларация
определяет документ с корневым элементом advert
, в котором могут встречаться также элементы product
и classified
, причем элементы advert
и product
могут содержать любые данные и любые из объявленных элементов, а элемент classified
всегда должен быть пустым.
Интервал:
Закладка: