Язык географической разметки KML
Покупка
Тематика:
Прикладное программное обеспечение
Издательство:
ДМК Пресс
Автор:
Вернеке Джози
Год издания: 2010
Кол-во страниц: 288
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Аспирантура
ISBN: 978-5-94074-554-9
Артикул: 615867.01.99
KML - язык разметки географических данных для отображения в таких программах, как Google Earth или Microsoft Virtual Earth. С его помощью можно представлять на трехмерной панораме Земли самую разнородную информацию - от фотоотчета о своем путешествии по Европе до динамической картины распространения птичьего группа или дрейфа материков. Возможности ограничены только вашим воображением! В книге подробно, на конкретных примерах описываются возможности версии KML 2.2, а также приводится справочник всех элементов языка.
Тематика:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Джози Вернеке Язык географической разметки KML
Josie Wernecke The KML Handbook Geographic Vizualization for the Web
Джози Вернеке Язык географической разметки KML Москва, 2010
УДК 32.973.26-018.2 ББК 004.4 В31 В31 Джози Вернеке Язык географической разметки KML. – М.: ДМК Пресс, 2010. – 288 с.: ил. ISBN 978-5-94074-554-9 KML – язык разметки географических данных для отображения в таких программах, как Google Earth или Microsoft Virtual Earth. С его помощью можно представлять на трехмерной панораме Земли самую разнородную информацию – от фотоотчета о своем путешествии по Европе до динамической картины распространения птичьего группа или дрейфа материков. Возможности ограничены только вашим воображением! В книге подробно, на конкретных примерах описываются возможности версии KML 2.2, а также приводится справочник всех элементов языка. УДК 32.973.26-018.2 ББК 004.4 Original English language edition published by Syngress Publishing, Inc. Copyright © by Syngress Publishing, Inc. All rights reserved. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 978-0-321-52559-8 (àíãë.) Copyright © by Pearson Education, Inc., 2009 ISBN 978-5-94074-554-9 © Ïåðåâîä íà ðóññêèé ÿçûê, îôîðìëåíèå, èçäàíèå, ÄÌÊ Ïðåññ, 2010
Посвящается Байрон
Содержание Содержание Содержание Содержание Содержание Содержание Предисловие ...................................................................................... 12 Введение ............................................................................................. 14 Для кого предназначена эта книга........................................................ 15 Что нужно знать для чтения этой книги ................................................. 15 Что вы найдете в этой книге ................................................................. 15 Запуск примеров.................................................................................. 16 Типографские соглашения ................................................................... 16 Благодарности ..................................................................................... 17 Глава 1. Первое знакомство ........................................................ 19 KML – международный стандарт .......................................................... 19 Является ли спецификация KML полной? ............................................. 20 Изобилие ресурсов ......................................................................... 21 Создание и распространение KMLфайлов .......................................... 21 Изложите свой рассказ в виде KML ...................................................... 21 Представление неба в KML .................................................................. 25 Hello, Earth ............................................................................................ 26 Просмотр примеров из этой книги .................................................. 27 Экспериментируйте! ....................................................................... 27 Структура KMLфайла ..................................................................... 28 Определение простых и составных элементов ................................ 28 Общие правила языка KML .............................................................. 29 Техника копирования и вставки............................................................ 29 Что дальше? ......................................................................................... 30 Глава 2. Метки и информационные окна ................................ 31 Пометка места ..................................................................................... 31 Настройка KMLпрезентации ............................................................... 31 Точечные метки .................................................................................... 32 Информационное окно по умолчанию .................................................. 33 Модификация информационного окна ................................................. 34 Добавление текста .......................................................................... 34 Оформление абзацев ...................................................................... 35 Выделение курсивом ....................................................................... 35 Выделение полужирным шрифтом .................................................. 35 Добавление гиперссылок ................................................................ 35 Добавление изображений ............................................................... 36 Пример ............................................................................................ 36 Простой шаблон информационного окна ........................................ 37 Изменение цвета фона .................................................................... 38
Содержание Содержание Содержание Содержание Содержание Задание цвета ................................................................................. 39 Цветоподборщик в Google Earth ...................................................... 40 Внутренние стили ............................................................................ 41 Изменение цвета текста .................................................................. 41 Исключение маршрута .................................................................... 42 Добавление нестандартного значка ................................................ 42 Развернутый шаблон информационного окна ................................. 43 Задание точки обзора .......................................................................... 44 Элемент LookAt ............................................................................... 44 Поиск и исправление ошибок .......................................................... 46 Облет меток в программе Google Earth ................................................ 47 Перелет к новой метке..................................................................... 49 Анкеры ............................................................................................ 49 Другие потомки элемента Placemark .................................................... 50 Синтаксис элемента <Placemark> ........................................................ 50 Элементы, производные от Feature ...................................................... 50 Упаковка KMLфайлов в KMZархив ..................................................... 51 Рекомендуемая структура файла..................................................... 52 Примеры ......................................................................................... 53 Что дальше? ......................................................................................... 54 Глава 3. Геометрия .......................................................................... 55 Предварительный обзор ...................................................................... 55 Познакомимся с координатами поближе ............................................. 56 Долгота ........................................................................................... 57 Широта............................................................................................ 57 Высота и режим высоты .................................................................. 57 Ломаные .......................................................................................... 58 Тесселяция ломаной........................................................................ 59 Экструзия ломаной.......................................................................... 60 Экспериментирование с элементом <altitudeMode> ....................... 61 Программа Google Maps.................................................................. 62 Элемент LineStyle ............................................................................ 62 Многоугольники ................................................................................... 63 Простой многоугольник ................................................................... 63 Элемент PolyStyle ............................................................................ 65 Многоугольники с дырками ............................................................. 67 Пример ............................................................................................ 67 Элемент MultiGeometry ........................................................................ 68 Модели ................................................................................................ 70 Местоположение ............................................................................. 72 Ориентация ..................................................................................... 72 Вращение в трехмерном пространстве ........................................... 73 Масштаб .......................................................................................... 73 Карта ресурсов................................................................................ 74
Содержание Содержание Содержание Содержание Содержание Включение информации об авторе и источнике ................................... 75 Что дальше? ......................................................................................... 76 Глава 4. Стили и значки ................................................................. 77 Предварительный обзор ...................................................................... 77 Путешествие по литературным произведениям ................................... 78 Составные части стилей ....................................................................... 79 Иерархия наследования стилей ....................................................... 79 Элемент LineStyle ............................................................................ 80 Элемент PolyStyle ............................................................................ 81 Элемент IconStyle ............................................................................ 83 Элемент LabelStyle .......................................................................... 88 Элемент BalloonStyle ....................................................................... 90 Элемент ListStyle ............................................................................. 93 Разделяемые и внутренние стили ........................................................ 96 Документы ....................................................................................... 96 Как задается URL стиля ................................................................... 98 Определение эффекта наката с помощью карт стилей ...................... 100 Синтаксис элемента <StyleMap> ................................................... 101 Сила точки ..................................................................................... 101 Простой пример ............................................................................ 101 Более сложный пример: другие способы применения карты стилей ........................................................................................... 103 Применение карты стилей для упрощения картинки...................... 105 Определение стилей во внешнем файле ....................................... 105 Что дальше? ....................................................................................... 106 Глава 5. Наложения ....................................................................... 107 Предварительный обзор .................................................................... 107 Что такое наложение? ........................................................................ 108 Инструменты для создания наложений .............................................. 110 Основные концепции ......................................................................... 110 Синтаксис элемента <Overlay> ...................................................... 111 Цвет и прозрачность наложений .................................................... 112 Порядок рисования ....................................................................... 112 Значки: задание и обновление накладываемого изображения ...... 113 Другой способ задания точки обзора: камера.................................... 113 Различия между элементами <LookAt> и <Camera> ...................... 113 Рельефное наложение ....................................................................... 118 Синтаксис элемента <GroundOverlay>........................................... 118 Элемент <LatLonBox>.................................................................... 119 Высота и режим высоты ................................................................ 120 Пример элемента <GroundOverlay> ............................................... 121 Экранное наложение .......................................................................... 122 Синтаксис элемента <ScreenOverlay> ........................................... 123
Содержание Содержание Содержание Содержание Содержание Задание единиц измерения x/y для накладываемых изображений и значков ................................................................. 123 Потомки элемента <ScreenOverlay> .............................................. 124 Пример простого экранного наложения ........................................ 125 Пример экранного наложения с элементом <ListStyle> ................. 126 Фотоналожение ................................................................................. 126 Гигапиксельные фотографии ........................................................ 127 Синтаксис элемента <PhotoOverlay> ............................................. 127 Основные понятия: форма и точка ................................................. 127 Поле зрения .................................................................................. 128 Дополнительный материал: пирамиды для гигапиксельных изображений ................................................................................. 130 Как работает пирамида изображений............................................ 130 Создание пирамиды изображений ................................................ 131 Пример фотоналожения ................................................................ 134 Что дальше? ....................................................................................... 135 Глава 6. Сетевые ссылки............................................................. 136 Предварительный обзор .................................................................... 136 Что такое сетевая ссылка? ................................................................. 137 Сетевая ссылка как механизм группировки ................................... 138 Локальные и удаленные сетевые ссылки ....................................... 138 Для чего нужны сетевые ссылки? ....................................................... 139 Основы клиентсерверной архитектуры ............................................. 139 Настройка вебсервера ................................................................. 140 Абсолютные и относительные ссылки на файлы ............................ 142 Синтаксис элемента <NetworkLink> ................................................... 143 Пример простой сетевой ссылки ....................................................... 146 Обновление сетевых ссылок .............................................................. 147 Обновление по времени или при обнаружении изменений ............ 147 Обновление по событиям просмотра ............................................ 148 Более сложный пример: модель ветрового переноса вулканического пепла ........................................................................ 148 Отправка информации от клиента серверу ........................................ 152 Отправка информации о текущем виде ......................................... 152 Отправка серверу дополнительных данных с помощью <httpQuery> ... 153 Пример обновления по событиям просмотра ................................ 154 Контроллеры сетевых ссылок............................................................. 156 Синтаксис элемента <NetworkLinkControl>.................................... 157 Пример переопределения поведения сервером ........................... 159 Что дальше? ....................................................................................... 161 Глава 7. Динамический KML ...................................................... 162 Предварительный обзор .................................................................... 162 Основные понятия.............................................................................. 162
10 10 10 10 Содержание Содержание Содержание Содержание Содержание Идентификаторы ........................................................................... 163 Фрагменты URI .............................................................................. 163 Обновление в KML ............................................................................. 164 Общее описание механизма обновления ...................................... 164 Синтаксис элемента <Update>, вложенного в <NetworkLinkControl> ... 166 Создание нового элемента с помощью <Update> ......................... 167 Изменение элемента с помощью <Update> ................................... 169 Удаление элемента с помощью <Update> ..................................... 170 Пример обновления с помощью сценария..................................... 172 Время и анимация в KML .................................................................... 175 Задание времени .......................................................................... 177 Всеобщее скоординированное время (UTC) ...................................... 178 Примеры задания времени............................................................ 178 Синтаксис элемента <TimeStamp> ................................................ 179 Синтаксис элемента <TimeSpan> .................................................. 179 Временные штампы и GPSданные ................................................ 180 Пример использования временных штампов с данными от GPSприемника ......................................................................... 180 Пример использования временных штампов с анимированными данными о метках ........................................... 183 Временные интервалы и рельефные наложения ............................ 185 Пример использования временных интервалов для анимации рельефных наложений ............................................ 186 Что дальше? ....................................................................................... 188 Глава 8. Большие наборы данных ............................................ 189 Предварительный обзор .................................................................... 189 Основные понятия.............................................................................. 190 Ограничивающий параллелепипед для регионов .......................... 191 Диапазон уровней детализации (LOD) ........................................... 192 Диапазон затухания....................................................................... 195 Детальное описание элемента <Lod>............................................ 195 Как регионы соотносятся с режимом обновления фрагмента ....... 196 Каскадное определение регионов ................................................. 196 Суперналожения............................................................................ 196 Регионы ............................................................................................. 196 Синтаксис элемента <Region> ...................................................... 197 Пример рельефного наложения с регионом .................................. 198 Регион для трехмерной модели ..................................................... 200 Регион для двумерного наложения на ненулевой высоте .............. 201 Развернутый пример: упрощение набора данных .............................. 202 Суперналожения ................................................................................ 207 Простой пример сетевой ссылки с ассоциированным регионом ... 207 Пример суперналожения ............................................................... 209 Подготовка данных для суперналожения ....................................... 209
11 11 11 11 Содержание Содержание Содержание Содержание Содержание Швейцарская система общественного транспорта ....................... 214 Расширенные данные ........................................................................ 215 Какой подход выбрать? ................................................................. 215 Добавление произвольных XMLданных в элемент Feature ............ 216 Добавление нетипизированных пар имя/значение ........................ 216 Использование элемента <BalloonStyle> в качестве шаблона ....... 218 Подстановка компонентов для элементов расширенных данных ... 219 Добавление типизированных данных в элемент Feature ................ 221 Пример подстановки компонентов ................................................ 224 Что дальше? ....................................................................................... 226 Приложение A. Справочное руководство по KML .............. 227 Приложение B. Астрономические данные в KML .............. 275 Алфавитный указатель................................................................. 282
Предисловие Тем, кому доводилось взбираться на высокую гору, знаком тот волшебный миг, когда окружающая местность внезапно отступает и открывается вид на землю, раскинувшуюся далеко внизу. Вот такое чувство я испытываю, когда пишу это предисловие. Я оглядываюсь на растянувшееся на десять лет восхождение к вершинам технологии геобраузинга – сначала была идея, потом патент, потом компания«стартап», и, наконец, эта технология стала частью повседневной жизни сотен миллионов людей. Я мысленно устремляю взор к возвышающимся вдалеке пикам, которые вы и другие разработчики, использующие KML, покорите, основываясь на сделанном нами. А еще, заглядывая к себе в душу, я понимаю, как десятилетие виртуального исследования нашей планеты изменило мое восприятие, сделало меня терпимее и заставило поновому уважать космический корабль под названием «Земля» и его команду. И это самое главное для меня. Опыт наглядно демонстрирует, что блуждание по географическим картам (геобраузинг) сродни личному присутствию – настолько, что пользователи продуктов Google Earth и Google Maps часто, увидев на карте свой дом и округу, замечают, как Томас С. Эллиот в стихотворении «Литтл Гиддинг»1, что «увидели свой край впервые». Покрытие всего мира, детальность изображения и отображение топографических особенностей местности – все это делает геобраузинг похожим на настоящее путешествие. Дополнительную притягательность придает плавность перемещения и свобода выбора области исследования. Объединенные в геобраузере, эти характеристики позволяют поновому взглянуть на старуюпрестарую присказку: «если бы ты там был, то понял бы». Теперь вы можете легко «отправиться туда» в любой момент времени, если под рукой есть персональный компьютер или мобильный телефон, а когда «доберетесь», то увидите нужную информацию в пространственном контексте и сможете исследовать интересующую вас область с разных точек зрения. Наконецто любой человек получил такие возможности узнавать, чувствовать и понимать, какие раньше давало только реальное путешествие. Это и легло в основу амбициозной идеи языка KML, разрабатываемого Открытым геопространственным консорциумом (Open Geospatial Consortium), – предложить популярный, всеохватывающий, международный стандарт, позволяющий описать, «что» находится «там» и «тогда» в геобраузере. В различных 1 Одно из стихотворений, вошедших в цикл «Четыре квартета» – Прим. перев.
13 13 13 13 Предисловие Предисловие Предисловие Предисловие Предисловие главах этой книги подробно описываются многочисленные формы этого «что», в том числе точки – на поверхности Земли, над ней, под ней и даже в космосе, линии – для представления дорог, тропинок и границ, залитые и оконтуренные области, текст, изображения, трехмерные объекты, например здания и суда, а также механизмы и кодировки, позволяющие обмениваться этими данными. В совокупности эти элементы образуют всесторонний язык разметки и инфраструктуру для аннотирования объектов на Земле и других планетах самой разнородной информацией, представляющей интерес для человечества. Можно было бы провести аналогию с веббраузером и языком HTML, однако имеется существенная разница – не имея HTMLфайла, веббраузер покажет лишь пустую страницу, тогда как геобраузер даже без KMLфайла дает детальное представление мира, которое можно исследовать, получая удовольствие. Недостает ему лишь аннотаций, превращающих планету в рассказчика. Если мысль об отсутствии необходимых аннотаций – скажем, информации о текущей обстановке на дорогах, о погоде, о местах расположения банкоматов вашего банка, о тенденциях роста температуры воды вблизи коралловых рифов, об истории путешествия Шеклтона1, обо всех местечках, упомянутых в какомнибудь романе Джейн Остин или пьесе Шекспира, или об ареале распространения вируса H5N1 – не дает вам покоя и побуждает к действию, то язык KML и эта книга – для вас. Поскольку именно вы сумеете воспользоваться всей мощью геобраузинга и геовеб для создания отдаленного материка, едва различимого с той вершины, на которой мы стоим сегодня, материка, где информация будет способна спасти нашу планету, изменить политику, дать людям образование и улучшить жизнь. И я благодарен вам за ту роль, которую вы сыграете в использовании виртуального мира для изменения реального. Майкл Т. Джонс Chief Technology Advocate Google 1 Известный исследователь Антарктики – Прим. перев.
Введение Умение «видеть географически» означает способность к целостному восприятию постоянно изменяющегося мира. Это способность проникать глубоко в суть проблем человечества и окружающей среды. Это умение находить баланс между глобальным и местным осмыслением. Оно открывает возможность охватить самые насущные проблемы современности: функционирование естественных систем Земли, все усложняющееся взаимодействие между человеком и окружающей средой, природу социальной организации общества с присущим ей неравенством и борьбой за власть над людьми и природой. Из проспекта «Почему мы выбираем географию?», географический факультет Ливерпульского университета Первые формальные знания по географии я получила на уроках мра Грейнджера в восьмом классе. И влюбилась в эту науку. Меня очаровывает многообразие способов графического изображения карт, и я до сих пор поражаюсь тому, сколь разнородную информацию можно представить на карте. По счастливому стечению обстоятельств, два года назад меня включили в группу, работающую в компании Google над проектом «KML». Это была удивительно интересная работа, к тому же не менее поучительная, чем год, потраченный в колледже на лекции, семинары и самостоятельные занятия. Аббревиатура KML означает Keyhole Markup Language (язык географической разметки), это простой текстовый формат, первоначально применявшийся в программе Google Earth (а теперь и в ряде других геобраузеров). Настоящая книга представляет собой попытку поделиться знаниями, которые я почерпнула у специалистов в Google. Когда я присоединилась к проекту KML, группа состояла всего из двух инженеров: Бента Хагемарка (Bent Hagemark) и Майкла Эшбриджа (Michael Ashbridge), он же Мэш (Mash). Перед Бентом и Мэшем была поставлена задача превратить существовавший на тот момент язык KML в формальную XMLсхему, разработать убедительные примеры, демонстрирующие хороший стиль кодирования, и довести язык до состояния, в котором он мог бы претендовать на звание международного стандарта. Я должна была создать сайт, посвященный KML, и доработать документацию. С этой задачей я успешно справилась, но осталось стойкое ощущение, будто я раскрыла только верхушку айсберга. Ну а теперь вашему вниманию предлагается сам айсберг. В этой книге я стремилась также поведать о некоторых вдохновляющих работах, выполненных блестящими умами в разных странах. Многие из них, являясь
15 15 15 15 Введение Введение Введение Введение Введение крупными специалистами в своих областях, ничего не знали о XML, KML, да и вообще об основах программирования. Осознав, что KML способен вдохнуть жизнь в сухие цифры, никому не известные названия мест и плоские карты, они потратили немало времени и сил на эксперименты, стремясь постичь логику, скрытую за форматом данных Google. Надеюсь, что, имея под рукой эту книгу, больше так мучиться не придется. Для кого предназначена эта книга Эта книга предназначена для тех, кто хочет знать, как создаются представления для таких геобраузеров, как Google Earth, но плохо знаком с программированием. Полезную информацию для себя найдут и «опытные пользователи», которым интересны более развитые возможности языка. Главы следуют друг за другом в порядке возрастания сложности материала. Что нужно знать для чтения этой книги Предполагается, что вы умеете создавать, сохранять и загружать файлы в компьютер и в веббраузер и что вы подключены к Интернету. Описываются некоторые элементы HTML, используемые для создания меток, но детального рассмотрения языка HTML вы здесь не найдете. Если этот язык вам совсем не знаком, то, вероятно, имеет смысл обратиться к другим источникам. Для работы с KML знание языка XML необязательно, все необходимые сведения будут приведены в тексте. Если вы захотите организовать сервер для размещения KMLфайлов, упоминаемых в ссылках (глава 6), то потребуется скачать, установить и сконфигурировать программный пакет с какимнибудь вебсервером, например Apache или lighttpd. В главе 6 имеется коекакая информация по этому поводу, но с деталями лучше ознакомиться, изучив прилагаемую к конкретному продукту документацию. Что вы найдете в этой книге В главе 1 «Первое знакомство» приводится обзор различных применений KML, начиная с простых наборов меток, позволяющих украсить и дополнить географической информацией блоги и сайты. Здесь же рассматривается простенький пример «Hello, Earth», иллюстрирующий основные части KMLфайла. В главе 2 «Метки и информационные окна» описывается, как создавать собственные значки и симпатичные стили информационных окон. Здесь приводится подробная информация о задании цветов в KML и о создании архивов в формате KMZ. В главе 3 «Геометрия» речь пойдет о задании координат и режима вычисления высоты. Объясняются также такие методы машинной графики, как тесселяция и экструзия. Включены примеры и пояснения ко всем геометрическим элементам, в том числе и моделям. Показано также, как добавлять элементы, описывающие автора и источник KMLфайла.
16 16 16 16 Введение Введение Введение Введение Введение В главе 4 «Стили и значки» рассказывается, как использовать общие стили и как создавать все возможные типы подстилей: значок, метка, линия, многоугольник, информационное окно и список. Глава 5 «Наложения» посвящена созданию наложений: экранных, рельефных и фотографических. Здесь же рассматривается вопрос о специальной обработке сверхбольших (гигапиксельных) фотографий и о том, как с помощью элемента Camera задать точку обзора. В главе 6 «Сетевые ссылки» речь пойдет о размещении KMLфайлов на вебсервере, где их можно периодически обновлять или обрабатывать с помощью написанных пользователем программ. Приводится также введение в контроллеры сетевых ссылок – элементы, которые позволяют управлять некоторыми аспектами получения файла по сетевой ссылке. В главе 7 «Динамический KML» приводятся подробные примеры работы с механизмом обновления, позволяющим создавать, изменять и удалять элементы KMLфайлов, которые ранее были загружены по сетевой ссылке. Здесь же описываются элементы задания времени, позволяющие создавать эффекты анимации в KMLфайле. В главе 8 «Большие наборы данных» содержится важная информация о регионах и нестандартных типах данных. Регион – это мощный механизм управления условиями, при которых данная деталь (feature) становится видимой. Если вас интересует создание нестандартного шаблона стиля всплывающего окна для своей KMLпрезентации, обязательно прочитайте раздел «Подстановка компонентов для элементов расширенных данных». Приложение A «Справочное руководство по KML» содержит алфавитный перечень всех элементов и типов, упоминаемых в стандарте KML, с краткими описаниями и сведениями о синтаксисе составных элементов. Здесь же описывается базовая структура KMLфайла и принятые в языке соглашения. В приложении B «Данные о небесной сфере в KML» рассказано, как отображать астрономические данные в геобраузере. Описывается также синтаксис располагающихся в начале KMLфайла «подсказок», которые говорят браузеру о том, что файл содержит данные о небесной сфере, и задают способ преобразования небесных координат для отображения в Google Earth и других геобраузерах. Запуск примеров На странице informit.com/title/0321525590 размещены тексты всех примеров, встречающихся в этой книге. Щелкните по ссылке для любого примера, чтобы запустить программу Google Earth и посмотреть презентацию. Для ознакомления с KMLкодом воспользуйтесь техникой копирования и вставки, описанной в главе 1. Типографские соглашения Примеры кода набраны шрифтом Courier. Синтаксис составных элементов набран тем же шрифтом, а чтобы было проще отличить от примеров, такие фрагменты напечатаны на сером фоне. Элементы, рассматриваемые в данной главе, выделяются полужирным шрифтом.