Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы XML-технологий. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Как видите, все правила, предназначенные для конкретного типа
среды, содержатся в конструкции
@m
Селекторы могут опреде-
.
edia
лять применение одних и тех же правил к нескольким элементам, но их точно так же можно использовать для нескольких типов среды:
media screen, print { BOOKLIST { display : block;} }
@
ногда для обеспечения модульности спецификации визуализа-
И ции требуется разделить таблицу стилей на несколько файлов, например, чтобы сохранить таблицу стилей для печати в одном файле, а звуковую таблицу стилей – в другом.
Конструкция
@import
п
озволяет импортировать правила из других таблиц стилей. В документе таблицы стилей она должна предшест­вовать всем остальным конструкциям руемую таблицу стилей можно с помощью ее адреса
онструкции
К
@media
и
@import
м
ожно комбинировать в одном
CSS
.
Сослаться на импорти-
.
U
RL
выражении.
.1.1.4 За кл юч ит ел ь ны е со об ра же ни я п о по во ду
4
SS
C
C
SS
п
редставляет собой простой язык стилей, который легко
запомнить и использовать. Его главное преимущество – простота.
X
ML
Если нужно только визуализировать документ никаких трансформаций, язык Основными недостатками
C
SS
C
SS
я
вляются отсутствие более сложных
дойдет для этого лучше всего.
по
,
не выполняя
моделей визуализации и зависимость от структуры обрабатываемых документов должно понимать язык
.
Значит, осуществляющее обработку приложение
X
ML
Для получения большей независимости
.
X
ML
между структурой документа и форматом визуализации лучше воспользоваться языком
Я
4.1.2
З
По сравнению с
ЫК
XSL
CS
S
совершенно другой способ преобразования документа
.
X
SL
сширяемый язык таблиц стилей реализует
ра
в
ML
отобра-
X
жаемые объекты. Он значительно более гибок и может быть исполь­зован для трансформации документа
X
в
языки для других сред.
ML
12
1
М
оделирование не является просто подготовкой документа для
визуального представления в сети
ML
X
вать содержание
д
ля различных целей, нужно иметь возмож-
Если необходимо использо-
.
W
eb
ность на основании одних исходных файлов создавать различные форматы их представления.
Язык – – –
X
Path
X XSLT
– ht
SLF
X
– http://www.w3.org/TR/xsl.
В спецификации документа а в
X
Path
– на Обработчик формаций (
Я
зык
остоит из трех спецификаций:
с
SL
– http://www.w3.org/TR/xpath;
tp://www.w3.org/TR/xslt;
в
X
X
,
ML
в спецификации
SLT
нимание обращено на трансформации
X
– н
SLF
а форматирование объектов,
доступ к узлам иерархической структуры
XSL
X
SLT
)
как и все другие языки семейства
,
XSL
жен, как минимум, поддерживать часть транс-
дол
X
Path
и
.
является
,
XML
X
ML
расширяемым. Это означает, что к имеющимся в языке объектам
.
форматирования можно добавить новые объекты, что позволит
SS
C
избавиться от ограничения таблиц стилей
- фи
ксированного
набора объектов форматирования.
4.1.2.1 Ра сш ир яе мы е т а б л и ц ы с т и ле й XSLT
Общая структура таблицы стилей довольно проста: в ее состав входят последовательности и шаблоны. Здесь мы увидим, каким образом эти компоненты используются для визуализации
X
ML
-
документов.
Таблица стилей
XS
одержит обязательный корневой элемент
с
L
с названием Stylesheet. Этот элемент наряду с набором других элемен- тов и свойств
X
SL
вляется частью словаря
я
X
SLT
Чтобы использовать
. содержимое XSLT, необходимо сначала объявить пространство имен, в которое оно будет помещено. Ниже показано, как с помощью элемента
tylesheet
s
об
ъявляется пространство имен
:
SL
X
xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<
Данный код делает доступными все элементы и атрибуты
пространства имен
X
назначает им префикс
и
SL
Это действие
.
x
sl
122
стандартно для всех таблиц стилей; его смысл поясняется в следую­щих подразделах, где мы рассмотрим кодирование последователь­ностей и шаблонов.
Последовательности. При обработке таблицы стилей
X
SL
оиск
п данных для трансформации осуществляется с помощью последова­тельностей. Говоря точнее, последовательность идентифицирует
ML
элемент или атрибут
X
-документа, являющийся ветвью его древо-
видной структуры.
Последовательности задаются весьма просто. Их можно срав­нить путями файловой системы: если пути указывают на папки и файлы вашего жесткого диска, то последовательности определяют элементы и атрибуты документа. Так, к примеру, элемент женный в элемент
h
как
д
tml/head
Н
азначение последовательностей − выделять фрагменты
окументов, подлежащие трансформации. Когда
.
html
юбого
л
HTML
окумента, идентифицируется
-д
X
SL
-п
,
вло-
ead
h
-
XML
роцессор обнаруживает некоторые данные, соответствующие последователь­ности, он передает их для выполнения трансформации шаблону.
Шаблоны. Шаблоны − часть таблицы стилей, предназначенная
для трансформации данных. Когда
-процессор обнаруживает
X
SL
последовательность в документе, он пропускает ее через шаблон и трансформирует. Количество шаблонов таблицы стилей не огра­ничено. Если в таблице стилей имеется несколько шаблонов, то
ML
каждый выполняет трансформацию определенного фрагмента
X
-
документа.
Поскольку
закодированы с помощью
SL
X
редставляет собой
п
XML
.
Шаблон
SL
X
оварь, таблицы стилей
-сл
XSL
п
редставляет собой последовательность инструкций форматирования, которые приме­няются к узлам, выбранным выражением таблице стилей шаблон
sl:template match="/">
<x
тот шаблон будет осуществлять трансформацию всего доку-
Э
X
ыглядел бы примерно так:
в
SL
XPath
.
В самой простой
мента целиком, начиная с корневого элемента. Как правило, вам
12
3
необходимо будет создавать шаблоны для элементов, находящихся ниже корневого.
sl:template
Таким образом, шаблон задается элементом
x
,
а после-
довательность, связанная с ним, − атрибутом
sl:template
x
Шаблон
.
олее сложной таблицы стилей мог бы иметь
б
X
SL
m
atch
лемента
э
следующий вид:
<
xsl:template match="Inventory/Book/title">
. . . . . . . . . . . . . . . . . . . . . . . . .
</xsl:template>
itle
Как видим, элемент
t
задан с перечислением всех его роди-
тельских элементов. Обратите внимание на закрывающий тег
/xsl:template>
<
, обязательный для всех шаблонов.
Чтобы задать преобразование для данных, находящихся внутри
элемента
itle
t
, следует поместить тег
xsl:value-of/>
<
внутри шаблона, как
показывает следующий код:
xsl:template match="Inventory/Book/title">
< <b>Глава </b> <xsl:value-of/> </xsl:template>
З
десь преобразование заключается в том, что перед данными
itle
t
элемента шрифтом. Элемент
.
itle
t
Кроме
.
бу
xsl:value-of/>
<
дет
омещен
п
<xsl:value-of/>
, су
лава
т
екст
Г
п
редставляет содержимое элемента
выделенный полужирным
,
ществует еще несколько элементов,
которые часто используются при создании шаблонов и входят
X
SL
в стандартное пространство имен
ставляет содержимое элемента (атрибута)
sl:value-of
x
– за
x
sl:if sl:for-each
x x
sl:apply-templates
.1.2.2 Ка к р а бо та е т яз ык X SL
4
– в
дает условное соответствие для шаблонов;
оздает цикл для элементов документа
– с
– пр
именяет шаблон к
Как и другие языки, основанные на правилах, документ
:
X
окументу.
-д
ML
;
L
XM
;
ML
X
SL
X
редставляет собой коллекцию правил, состоящую из раздела
п
12
4
сравнения образцов и раздела действий. На языке
XS
э
ти правила
L
называются шаблонами, так что атомарным элементом таблицы
SL
X
стилей
Как только выражение
вается с содержанием шаблона. Так как документ
я
вляется шаблон.
X
Path
ыбрало узел документа, оно связы-
в
ML
X
трансформи-
руется в дерево результата, состоящее из объектов форматирования
SL
X
, возникает необходимость сравнить каждый элемент оригиналь-
ного документа
XML
конкретным шаблоном. Кроме того, при необ-
с ходимости трансформировать оригинальный документ совместно используется несколько конструкций
X
SLT
и
позволяет достичь любого узла документа
выражений
X
,
ML
преобразуемого
X
Path
,
что
в иерархическую структуру.
Выражение мента. Конструкция узлами и шаблонами, содержащими объекты форматирования
XPath
ает возможность достичь любого узла доку-
д
X
SLT
п
озволяет установить соответствие между
XSL
.
тобы лучше понять процесс, обратимся к внутреннему устрой-
Ч ству обработчика
– дерево, содержащее входной
– дерево с таблицей стилей
ерево выходного документа, как правило,
– д
Процессор
.
XSL
X
XSL
SL;
оздает три дерева:
с
-документ, для визуализации;
X
ML
H
-кода, исполь-
TML
зуемого браузером для визуального отображения документа.
Для каждого шаблона в дереве, содержащем таблицу стилей, при обнаружении явной или неявной конструкции
ap
ply-template
п
роцессор
находит соответствующий узел в дереве исходного документа.
Обнаружив соответствие, процессор использует содержание шаблона в качестве основы для результата, записываемого в дерево на выходе.
Когда все узлы в исходном дереве найдены и к ним применены соответствующие шаблоны, вы получаете полностью трансформи­рованный
X
окумент. При открытии документа
-д
ML
X
ML
в б
раузере его таблица стилей автоматически обрабатывается, в результате чего в окне браузера появляется сгенерированный
H
TML
окумент. Весь
-д описанный процесс происходит совершенно незаметно для пользо­вателя. Схема выполнения такого преобразования показана на Рис. 4.2.
12
5
Следует иметь в виду, что
ем
ML
X
X
в
окументов в формат
-д
ML
любой другой язык разметки, поскольку обладает высокой
X
H
н
е ограничивается преобразовани-
SL
а может перевести документ из
,
TML
степенью обобщенности. Например, если задачей является печать
с. 4.2 Визуализация XML-документа
Ри
12
6
документа, на выходе будут сгенерированы объекты форматирова­ния, которые можно трансформировать в графические объекты для печати.
РИМЕНЕНИЕ CSS
П
4.2
В этом разделе мы познакомимся с первым из описанных выше методов отображения каскадных стилей (
C
SS
-д
X
. Таблица каскадных стилей представляет
)
окументов в браузере – таблицами
ML
собой файл, который содержит инструкции для форматирования элементов в
4.2.1
Т
П
аблицы каскадных стилей для отображения
X
ML
ИМЕР ПРОС ТОЙ ТАБ ЛИЦЫ КАСК АДНЫХ С ТИЛЕЙ
Р
-док
ументе.
-документа
X
ML
создаются в два этапа:
1. Создание файла таблицы стилей.
2. Связывание таблицы стилей с
Далее рассмотрим примеры отображения
X
-д
окументом.
ML
X
окументов
-д
ML
с помощью каскадных таблиц стилей.
Сначала рассмотрим пример простой таблицы каскадных стилей.
* Имя файла: CatalogCSS2.css */
/
book
{display:block;
margin-top:12pt;
font-size:10pt}
title {font-style:italic}
author {font-weight:bold}
В данном примере в начале таблицы стилей содержится коммен­тарий. Далее таблица стилей содержит следующие объявления:
d
isplay:block:
argin-top:12pt:
m
f
ont-size:10pt:
отображения текста элемента, в
ont-style:italic:
f
ont-weight:bold:
f
помещает перевод строки перед и после текста;
д
обавляет верхнее поле высотой в
12 п
;
т
устанавливает размер шрифта, используемого для
;
0 пт
1
тображает текст элемента курсивом;
о
о
тображает текст элемента полужирным.
12
7
Сформированная выше таблица стилей предназначена для при­соединения к
Ч
тобы связать таблицу каскадных стилей с
X
окументу
-д
ML
C
atalogXSL2.xml
.
ML
X
-д
окументом, вы
должны вставить в документ зарезервированную инструкцию
ml-stylesheet
по обработке
x
.
Эта инструкция по обработке имеет следующую обобщенную форму записи, где
RLТаблСтил
U
есть
RL
U
, задающий местонахождение
файла таблицы стилей:
<?xml-stylesheet type="text/css" href="URLТаблСтил"?>
ml-stylesheet
нашем примере инструкция
В
<
?xml-stylesheet type="text/css" href="CatalogCSS2.css"?>
Возможность присоединять к
x
-документу внешнюю таблицу
X
ML
меет вид:
и
стилей увеличивает гибкость форматирования документа. Вы можете полностью изменить вид документа, просто присоединив к нему другую таблицу стилей. Чтобы сделать это, достаточно всего лишь отредактировать
U
инструкции по обработке
в
RL
ml-stylesheet
x
–
е внося никаких других изменений в
н
Если вы связали таблицу стилей с
X
ML
X
-д
ML
окумент.
окументом, вы можете
-д
открыть этот документ непосредственно в браузере путем ввода
окумента или путь к файлу в поле
д
Браузер откроет
-документ и отобразит его с использованием
ML
X
Ad
dress
(
дрес
А
.
)
инструкций из связанной таблицы стилей.
с. 4.3 Отображение XML-документа с помощью CSS-кода
Ри
U
RL
На Рис. 4.3 показано, как браузер отображает
XML
окумент,
-д который использует данную таблицу стилей в соответствии с инст­рукциями, содержащимися в этих объявлениях.
12
8
римечание. Если браузер не может найти файл таблицы стилей,
П
x
заданный в инструкции по обработке мента с использованием своего собственного набора свойств (например, с текущими значениями гарнитуры и размера шрифта). Если XML-документ не связан с таблицей стилей (т. е. документ не содержит инструкции по
ml-stylesheet
, он отобразит текст доку-
ml-stylesheet
обработке мента, но не содержимое документа.
Н
x
абор свойств, используемых в таблицах каскадных стилей,
)
, то браузер отобразит исходный
ML
X
-к
од для доку-
похож на набор свойств, которые вы можете применять в текстовом процессоре.
4.2.2
СТ ИЛ ЕЙ
РИ МЕ Р БОЛ ЕЕ СЛОЖ НО Й ТАБЛИЦЫ КА СКАДНЫХ
П
А теперь изменим таблицу стилей так, чтобы форматировать
символьные данные элементов следующим образом:
– от
argin-top:12pt
m
( используя размер шрифта
ображать каждый элемент
)
и с переводом строки сверху и снизу (
10 пт (font-size:10pt
– отображать каждый из элементов
в отдельной строке (
display:block
);
bo
с
отступом сверху в
ok
;
)
itle
t
2 пт
1
isplay:block
d
,
au
thor
,
b
inding
и
p
)
rice
,
t
– отображать элемент
полужирным (
font-weight:bold
мание, что установка для элемента рует над установкой размера
itle
шрифтом с размером
, курсивом (
)
tit
le
размера шрифта
родительского элемента
для
10 пт
– отступ слева для каждого из элементов
15 п
ma
т
rgin-left:15pt
(
– отображать элемент
);
au
– не отображать элемент Д
ля этого измените
C
thor
SS
pa
-т
п
олужирным (
di
ges
splay:none
(
аблицу
font-style:italic
f
ont-weight:bold
).
atalogCSS2.css
C
a
uthor
1
2 пт
. Обратите вни-
)
,
fon
t-size:12pt
(
1
2 пт
превали-
book
inding
);
и
p
rice
b
как показано
,
;
н
),
а
в листинге, приведенном ниже по тексту, и сохраните под именем
atalogCSS3.css.
C
/* Имя файла: CatalogCSS3.css */ book {display:block; margin-top:12pt;
12
9
font-size:10pt} title {display:block; font-size:12pt; font-weight:bold; font-style:italic} author {display:block; margin-left:15pt; font-weight:bold} binding {display:block; margin-left:15pt} pages {display:none} price {display:block; margin-left:15pt}
Рис. 4.4 Отображение XML-документа (CatalogCSS3.css)
talogCSS2.xml
вашем текстовом редакторе откройте документ
В
Ca
Добавьте в конце пролога документа (над элементом следующую инструкцию по обработке:
?xml-stylesheet type="text/css" href="CatalogCSS3.css"?>
<
13
0
i
nventory
.
)
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]