- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания XSLT - Стивен Холзнер
Шрифт:
Интервал:
Закладка:
Поддержка XML Base
Одним из пунктов, добавленных в рабочий проект XSLT 1.1, была поддержка спецификации W3C XML Base. На момент написания книги спецификация XML Base существует в форме предлагаемой рекомендации (Proposed Recommendation), датированной 20 декабря 2000 г.; текущую версию документа можно найти по адресу www.w3.org/TR/xmlbase/.
Эта спецификация позволяет обеспечивать для документов XML и XSL базовый идентификаторы URI аналогично элементу HTML <BASE>. (Фактически, благодаря элементу HTML <BASE> существует XBase: W3C взял на себя обязательство дать XML всю мощь ссылочной модели HTML 4.0 и затем развивать ее.) Как вы помните, одним из свойств элементов XSL является их базовый URI, и теперь его можно устанавливать при помощи XML Base. Однако пока ни один из известных мне процессоров XSLT не поддерживает XML Base.
Здесь будет приведен только обзор работы с XML Base: для установки базового URI XML-документа можно использовать атрибут xml:base. Другие идентификаторы URI документа затем вычисляются, используя это значение в качестве базы. Заметьте, что xml:base использует пространство имен xml, которое предопределено в XML как "http://www.w3.org/XML/1998/namespace". В следующем примере используются ссылки XML, XML links (или XLinks):
<?xml version="1.0"?>
<MOVIE_REVIEW xmlns:xlink="http://www.w3.org/1999/xlink"
xml:base="http://www.starpowder.com/"
xlink:type="simple" xlink:show="new" xlink:href="reviews.xml">
Mr. Blandings Builds His Dream House
</MOVIE_REVIEW>
Используя значение, присвоенное атрибуту xml:base, URI атрибута xlink:href, "reviews.xml" раскрывается в полный URI "http://www.starpowder.com/reviews.xml". Подобным образом можно при помощи xml:base задать базовый URI для документа или конкретного элемента.
В рабочем проекте XSLT 1.1 с каждым узлом связан его URI, называемый базовым URI, который используется для раскрытия значений атрибута, представляющих относительные URI, в абсолютные URI. Вот как следует определять базовый URI:
• базовый URI корневого узла — это URI документа;
• базовый URI узла элемента— это базовый URI, заданный в элементе атрибутом xml:base (если таковой существует), или базовый URI элемента- родителя элемента в документе, или внешняя сущность (если существует), или базовый URI сущности документа или внешней сущности, содержащей элемент;
• базовый URI для узла инструкции обработки — это URI, который будет применен к ссылке URI в содержимом инструкции обработки. В соответствии со спецификацией XML Base, базовым URI для ссылки URI, появляющейся в содержимом инструкции обработки, является базовый URI родительского элемента инструкции обработки (если таковой имеется) в пределах сущности документа или внешней сущности, или базовый URI сущности документа или внешней сущности, содержащей инструкцию обработки;
• базовым URI для текстового узла, узла комментария или узла атрибута является базовый URI родителя этого узла;
• базовый URI для узла пространства имен, однако, зависит от реализации.
Установка базовых URI документов и элементов может оказаться удобной, если вам приходится работать с очень большим множеством документов. При реорганизации этого множества документов вам нужно будет переустановить только один базовый URI, а не все индивидуальные URI. Однако, как я уже говорил, из известных мне процессоров XSLT ни один пока не поддерживает XML Base.
Выбор методов вывода
Еще один важный аспект создания таблиц стилей — выбор метода вывода: XML, HTML, текст (то есть любой текстовый документ, не являющийся документом XML или HTML) и т.д. Другими словами, метод вывода (output method) определяет тип создаваемого документа. По умолчанию методом вывода является XML, хотя большинство процессоров при встрече элемента <HTML> создают документы HTML. (Некоторые процессоры действуют подобным образом, если расширение создаваемого файла документа .html.)
Этот материал подробно изложен в главе 6, но сейчас мы также кратко его рассмотрим. Если только вы полностью не уверены, что правила вывода вашего процессора XSLT по умолчанию делают именно то, что нужно, зачастую можно посоветовать явно установить тип вывода в требуемый вам вид документа при помощи элемента <xsl:output>. Выходной тип может задать, например, будет ли процессор XSLT записывать инструкцию обработки XML, <?xml:version="1.0"?>, в начало документа, а также указать тип MIME (такой, как «text/xml» или «text/html») документов, отправляемых процессором XSLT с web-сервера браузеру. Кроме того, если вы установите тип вывода в HTML, большинство процессоров XSLT распознают, что не всем элементам в HTML требуются закрывающие и открывающие теги, и т.д.
Преобразованию из XML в другие типы документов посвящена глава 6, но здесь мы также кратко рассмотрим элемент <xsl:output>, поскольку это важно для общего понимания работы таблиц стилей. В следующем списке перечислены атрибуты <xsl:output>:
• cdata-section-elements (необязательный). Задает названия тех элементов, чье содержимое вы хотите вывести в виде разделов CDATA. Принимает значение списка QName, разделенных символами-разделителями;
• doctype-public (необязательный). Определяет открытый идентификатор, который будет использоваться в объявлении <!DOCTYPE> вывода. Устанавливается в строковое значение;
• doctype-system (необязательный). Определяет системный идентификатор, который будет использоваться в объявлении <!DOCTYPE> вывода;
• encoding (необязательный). Определяет кодировку символов. Устанавливается в строковое значение;
• indent (необязательный). Определяет, будет ли вывод выровнен с отображением структуры вложенности. Устанавливается в «yes» или «no»;
• media-type (необязательный). Определяет тип MIME вывода. Устанавливается в строковое значение;
• method (необязательный). Определяет формат вывода. Устанавливается в «xml», «html», «text» или допустимое имя типа QName;
• omit-xml-declaration (необязательный). Определяет, будет ли включено в вывод объявление XML. Устанавливается в «yes» или «по»;
• standalone (необязательный). Определяет, будет ли включено в вывод отдельное объявление, и если да — устанавливает его значение. Устанавливается в «yes» или «по»;
• version (необязательный). Задает версию вывода. Устанавливается в допустимую лексему типа NMToken.
Чаще всего используется атрибут method элемента, потому что с его помощью устанавливается требуемый тип дерева вывода. Самые распространенные значения — «html», «xml» и «text».
Метод вывода: HTML
В нашей таблице стилей planets.xsl элемент <xsl:output> не используется; это значит, что для этой таблицы я полагался на правила вывода по умолчанию. Типом вывода по умолчанию является XML, если только процессор XSLT не встретит тег <HTML> или <html>. (Заметьте, что это не формальное требование, а только соглашение, которому не обязаны следовать все процессоры XSLT.) В planets.xsl я использовал тег <HTML> следующим образом:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/PLANETS">
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
.
.
.
Однако, если удалить этот тег:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/PLANETS">
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
.
.
.
то такой вид вывода вы получите от процессора XT Джеймса Кларка. Обратите внимание на инструкции обработки XML в начале:
<?xml version="1.0" encoding="utf-8"?>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
.
.
.
С другой стороны, можно явно указать тип вывода HTML при помощи элемента <xsl:output>, даже не прибегая к элементу <HTML>:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/PLANETS">
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
.
.
.
Вот вывод XT в данном случае — только фрагмент HTML, никаких инструкций обработки XML:
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
.
.
.
ЭЛЕМЕНТЫ <META>, АВТОМАТИЧЕСКИ ДОБАВЛЯЕМЫЕ В HTML