Технология XSLT
Шрифт:
Еще раз повторим, что это форматирование применяется только в целях наглядности исходного кода, когда это не противоречит смыслу документа. В предыдущем случае документ на самом деле мог выглядеть как:
В тех случаях, когда позиции пробельных символов документа важны для повествования, они будут особым образом выделяться. Для обозначения пробела мы будем использовать символ "
Базовые понятия или моменты, на которые следует обратить повышенное внимание, выделяются в тексте курсивом. Иностранные аббревиатуры и термины расшифровываются и переводятся в скобках, например: XSLT (от англ. extensible Stylesheet Language for Transformations — расширяемый язык стилей для преобразований). Ссылки на другие книги берутся в квадратные скобки с указанием года издания, например, [Кнут 2001]. Более точные библиографические данные можно найти в списке литературы.
Благодарности
Прежде всего, хотелось бы выразить признательность группе Систем Баз Данных (DBS) Исследовательского Центра Информатики (Forschungszentrum Informatik, FZI) при университете г. Карлсруэ, где мне посчастливилось работать. Эта книга написана главным образом благодаря практическому опыту, полученному во множестве проектов Европейской Комиссии, которыми занимается наш центр.
Эта книга не состоялась бы без участия Майкла Кея (разработчика XSLT-процессора Saxon и редактора новой версии языка XSLT), Стива Мюнха (руководителя XML-проектов Oracle), Кена Холлмана (Crane Softwrights Ltd.), Олега Ткаченко (MultiConn International Ltd.) и многих других людей, которые советами и конкретными примерами помогали готовить этот непростой материал.
Отдельной благодарностью хочется упомянуть всех участников конференций fido7.ru.xml, comp.text.xml и списка рассылки XSL List, которые своими вопросами подсказывали, какие проблемы интересуют XSLT-разработчиков на практике. Большинство примеров, которые приводятся в этой книге, были ответами на вопросы участников конференций.
Большое спасибо моим научным руководителям — профессору Н.И. Юсуповой и профессору П.X. Локеману, за мудрые слова и внимание, которое они мне уделяли.
Выражаю признательность также сотрудникам издательства "БХВ-Петербург": Евгению Рыбакову, Анне Кузьминой и Леониду Кочину — за помощь при подготовке книги к печати.
И, наконец, большое спасибо моей семье и моим добрым друзьям — Юре Лотнику, Антону Кузнецову и Юле Кирилловой за поддержку, которая чувствовалась за несколько тысяч километров.
Глава 1
Введение в XML
Что такое XML?
За последние несколько десятков лет, прошедших с создания первых электронных устройств, в игру с природой человеком была введена третья сторона — вычислительные машины. Человек постепенно
Но на всем пути становления информационных систем человек неизбежно сталкивался с одной и той же проблемой — с проблемой понимания. Если два человека, говорящие на разных языках, попробуют объяснить что- нибудь друг другу, то это легко может получиться, когда проблема проста, например, "как пройти к большому зданию с куполом наверху?". Однако же, в случае, если объяснить нужно что-нибудь более сложное, то, не зная языка собеседника, сделать это будет очень трудно.
Проблема понимания между человеком и машиной усугубляется еще и тем, что машина — это цифровое устройство, и все данные в ней состоят из атомов информации — битов, принимающих только два значения — "0" (что иногда понимается, как "нет" или "ложь") и "1" ("да", "истина"). Изначально цифровые устройства вообще использовались только для решения математических задач — расчета баллистики, шифрации и тому подобного.
Для машинной записи естественных языков люди ставили в соответствие символам числа, организуя, таким образом, текстовую информацию в машинном представлении. Это был первый шаг на пути взаимопонимания между машинами и человеком — отпала необходимость писать программы в двоичных кодах. В течение короткого времени было создано множество языков программирования, одновременно понятных как человеку, поскольку они использовали синтаксические конструкции естественных языков, так и машине, потому как могли быть переведены (транслированы) в машинные коды.
Затем произошел взрыв. Программирование, которое во времена машинных кодов было уделом энтузиастов, стало массовым, идеи и вложения полились рекой, и дальнейшее развитие информационных технологий можно сравнить с распространением ударной волны.
В жизни современного общества сложно переоценить эффект, произведенный появлением и повсеместным распространением нового глобального пространства обмена информации — сетью Интернет. То, что начиналось как военная разработка для доставки электронных сообщений и депеш, вылилось в новое информационное измерение пространства, не знающее географических границ. Интернет позволил обмениваться информацией в электронном виде, объемы которой к тому времени уже были огромны.
Однако, Интернет, в свою очередь, возродил старую проблему понимания — вопрос "как ты поймешь то, что я тебе скажу?" был заменен проблемой "как система В сможет переработать информацию, которую предоставит ей система A?". Пытаясь ответить на это, люди стали создавать стандарты и протоколы, которые позволили бы системам общаться на одних языках. Вместе с тем, по мере глобализации Интернета и увеличения числа систем, обменивающихся информацией (от рабочих станций обычных пользователей — до суперсерверов с огромными базами данных), объем информации, требовавшей стандартного выражения, прогрессировал экспоненциально.
Расширяемый язык разметки XML (extensible Mark-up Language) — это результат довольно успешной попытки создать язык для текстового выражения структурированной информации в стандартном виде. XML — это метаязык в том смысле, что сам по себе он не имеет операторов, не определяет никакую алгоритмическую последовательность действий и не выполняет никаких вычислений, его цель — описывать новые языки документов.
Разметка документов
Идею разметки документов будет проще всего проиллюстрировать на примере. Представим себе следующий рекламный текст: