Главная страница
Навигация по странице:

  • Ильдар Хабибуллин Разработка WEB-СЛУЖБ средствами Java

  • Группа подготовки издания

  • Лицензия ИД № 02429 от 24.07.00. Подписано в печать Формат Печать офсетная. Усл. печ. л. 32,25. Тираж 3000 экз. Заказ 748 "БХВ-Петербург"

  • Отпечатано с готовых диапозитивов в Академической типографии РАН 199034, Санкт-Петербург, 9 линия

  • Содержание Введение 8 Глава 1. Обработка документов XML 14

  • Глава 2. Архитектура Web Services 83

  • Глава 3. Протокол SOAP и Web Services 134

  • Глава 4. Описание Web Services на языке WSDL 183

  • Глава 5. Регистрация Web Services в реестре UDDI 212

  • Глава 6. Детали создания Web Services 247

  • Глава 7. Web Services как часть J2EE 305

  • Глава 8. Безопасность предоставления услуг 337

  • Глава 9. Развитие Web Services 364

  • Список литературы 382 Предметный указатель 384 Введение

  • ГЛАВА 1 Обработка документов XML

  • Листинг 1.1. Пример XML-документа

  • Листинг Пример XML-документа с атрибутами в открывающем теге

  • Разработка веб-служб средствами Java. Ильдар ХабибуллинРазработкаWebслужбсредствами


    Скачать 9.24 Mb.
    НазваниеИльдар ХабибуллинРазработкаWebслужбсредствами
    АнкорРазработка веб-служб средствами Java.pdf
    Дата03.02.2018
    Размер9.24 Mb.
    Формат файлаpdf
    Имя файлаРазработка веб-служб средствами Java.pdf
    ТипКнига
    #15148
    КатегорияИнформатика. Вычислительная техника
    страница1 из 21
      1   2   3   4   5   6   7   8   9   ...   21

    Ильдар Хабибуллин
    Разработка
    Web-служб
    средствами
    Архитектура Web-служб
    Работа Web-служб в J2EE
    Безопасность предоставления услуг

    Ильдар Хабибуллин
    Разработка
    WEB-СЛУЖБ
    средствами Java
    Санкт-Петербург
    «БХВ-Петербург»
    2003

    УДК 681.3.068
    ББК 32.973.202
    Х12
    Хабибуллин И. Ш.
    Х12 Разработка Web-служб средствами Java. — СПб.:
    БХВ-Петербург, 2003. — 400 с: ил.
    ISBN 5-94157-227-1
    Книга посвящена описанию методов разработки Web-служб — приложений,
    доступных в Internet с помощью языка XML и обычных средств WWW. В книге последовательно излагаются все сведения, необходимые для создания Web- служб, рассматриваются средства разработки на языке Java, разъясняются прие- мы их использования. Приводятся необходимые сведения о языке прото- колы SOAP, WSDL,
    и другие протоколы и спецификации, применяемые при создании Web-служб. Подробно изучаются пакеты классов Java и прочие инструментальные средства, облегчающие создание приложений. Особое вни- мание уделено русификации Web-служб.
    Пользуясь материалом книги, читатель сможет создавать самые разнообраз- ные Web-службы любой сложности. Книга адресована студентам старших кур- сов, ИТ-специалистам и профессиональным разработчикам Web-приложений.
    Для программистов
    УДК 681.3.068
    ББК 32.973.202
    Группа подготовки издания:
    Главный редактор Екатерина Кондукова
    Зам. главного редактора Евгений Рыбаков
    Зав. редакцией Григорий Добин
    Редактор Анатолий Хрипов
    Компьютерная верстка Татьяны Валерьяновой
    Корректор Евгений Камский
    Оформление серии Via Design
    Дизайн обложки Игоря Цырульникова
    Зав. производством Николай Тверских
    Лицензия ИД № 02429 от 24.07.00. Подписано в печать
    Формат
    Печать офсетная. Усл. печ. л. 32,25.
    Тираж 3000 экз. Заказ
    748
    "БХВ-Петербург",
    Санкт-Петербург, Измайловский пр., 29.
    Гигиеническое заключение на продукцию, товар No
    от
    г. выдано Департаментом ГСЭН Минздрава России.
    Отпечатано с готовых диапозитивов
    в Академической типографии
    РАН
    199034, Санкт-Петербург, 9 линия,
    ISBN 5-94157-227-1
    Хабибуллин И. Ш., 2003
    ©
    издательство "БХВ-Петербург", 2003

    Содержание
    Введение 8
    Глава 1. Обработка документов XML 14
    Описание DTD 21
    Пространство имен тегов 23
    XML 25
    Встроенные простые типы XSD 26
    Определение простых типов 28
    Описание элементов и их атрибутов 32
    Определение сложных типов 33
    Пример: схема адресной книги 40
    Безымянные типы 43
    Пространства имен языка XSD 45
    Включение файлов схемы в другую схему 48
    Связь документа XML со своей схемой 50
    Другие языки описания схем 51
    Инструкции по обработке 51
    Анализ документа XML 52
    Анализ документов XML с помощью SAX2 API 53
    Связывание данных XML с объектами Java 63
    Объекты данных
    64
    Анализ документов XML с помощью DOM API ..65
    Интерфейс Node 67
    Интерфейс Document 68
    Интерфейс Element 70
    Другие DOM-парсеры 74
    Преобразование дерева объектов в XML 75
    Таблицы стилей XSL 77
    Преобразование документа XML в HTML 81

    4 Содержание
    Глава 2. Архитектура Web Services 83
    Протокол
    88
    Протокол SOAP 92
    Процедурный стиль послания SOAP 93
    Документный стиль послания SOAP 96
    Средства разработки SOAP 97
    Создание простейшей Java Web-службы 99
    Описание Web-службы 107
    Инструменты создания описаний WSDL
    Регистрация Web-службы
    Система описания и обнаружения UDDI
    Язык для поиска Web-служб 123
    Пакет JAXR 127
    Стек протоколов Web Services 133
    Глава 3. Протокол SOAP и Web Services 134
    Структура SOAP-послания 135
    Сообщение об ошибке 138
    Типы ошибок 140
    Типы данных SOAP 143
    Массивы 145
    Структуры 147
    Введение новых типов 148
    Процедурный стиль SOAP 149
    Сложные аргументы и результаты 151
    Пересылка послания по протоколу HTTP 155
    Использование метода GET 157
    Пересылка послания по протоколу SMTP 158
    SOAP-послание с дополнениями 159
    multipart/related 159
    Оформление SOAP-послания с дополнениями 163
    Формат сообщения DIME 164
    Средства создания SOAP-посланий 166
    Работа с Axis 167
    Установка Axis 167
    Создание Web-службы для Axis 168
    Клиент Axis 169
    Использование конфигурационного файла 170
    Использование описаний WSDL 176
    Сеанс связи с Axis 178

    Содержание
    Глава 4. Описание Web Services на языке WSDL 183
    Состав документа WSDL 183
    Конкретизация описания WSDL 193
    Дополнительные элементы протокола SOAP 193
    Дополнительные элементы протокола HTTP 196
    Дополнительные элементы МШЕ-типов 201
    Инструменты создания описаний WSDL 202
    Пакет JWSDL и его реализация WSDL4J 206
    Глава 5. Регистрация Web Services в реестре UDDI 212
    Состав реестра UDDI 213
    Элемент
    216
    Элемент 219
    Элемент
    220
    Элемент 221
    Элемент
    223
    Программный интерфейс UDDI 223
    Функции запроса информации 225
    Функции регистрации и модификации Web-службы 226
    Реализации UDDI API 227
    Пакет IBM UDDI4J 228
    Пакет JAXR 234
    Состав пакета JAXR 235
    Глава 6. Детали создания Web Services 247
    Создание SOAP-послания 248
    Узел дерева элементов Node 248
    Элемент послания SOAPElement 248
    Основные элементы SOAP-послания 249
    Послание SOAPMessage 251
    Процесс создания SOAP-послания 252
    Отправка SOAP-послания и получение ответа 254
    Создание SOAP-послания с дополнениями 257
    Класс
    258
    Сообщение об ошибке 262
    Интерфейс
    262
    Асинхронный обмен сообщениями 265
    Протокол WS-Routing и его реализация 266
    Связь с поставщиком сообщений 271
    Создание SOAP-послания и его отправка 272

    Содержание
    Сервлеты 274
    Сервлеты класса JAXMServlet 278
    Послания процедурного стиля 281
    Создание Web-службы средствами JAX-RPC 283
    Жизненный цикл Web-службы 287
    Контекст Web-службы 287
    Предварительная обработка послания 288
    Компиляция файлов Web-службы 291
    Конфигурационный файл компилятора jaxrpc-ri.xml 292
    Создание клиента JAX-RPC 295
    Глава 7. Web Services как часть J2EE 305
    Компоненты EJB 306
    Session-компоненты 307
    Контекст session-компонента
    MDB-компоненты 315
    Конфигурационный файл EJB-приложения 317
    Размещение Web-служб на
    321
    Реализация порта 323
    Конфигурационный файл Web-службы 324
    Конфигурационный файл клиента 328
    Конфигурационный файл JAX-RPC 332
    Установка Web-службы в контейнер 335
    Глава 8. Безопасность предоставления услуг 337
    Криптография 338
    Симметричные ключи 338
    Асимметричные ключи 339
    Дайджест сообщения 340
    Цифровая подпись 340
    Цифровой сертификат 341
    Реализация криптографии в Java 341
    Безопасность на транспортном уровне 342
    Безопасность на уровне
    343
    Шифрование документов
    344
    Цифровая подпись документа
    349
    Средства Java для шифрования XML 352
    Безопасность SOAP-посланий 357
    Спецификация
    359
    Что дальше? 363

    Содержание
    Глава 9. Развитие Web Services 364
    Протокол SOAP 364
    Описание на языке WSDL 365
    Реестр UDDI 366
    Фирменные разработки 366
    Язык описания потоков работ WSFL 367
    Деятельность организации WS-I , 376
    Профиль WS-Basic 377
    Что дальше? 380
    Список литературы 382
    Предметный указатель 384

    Введение
    Уже несколько лет в Интернете и на страницах компьютерных журналов мелькает словосочетание "Web Services" ("Web-службы"). Это понятие бурно обсуждается специалистами, создаются рабочие группы и целые фирмы,
    занимающиеся Web Services, выходят программные продукты, публикуются статьи и книги. Буквальный перевод этих слов ничего не проясняет — вся "Всемирная паутина" только тем и занимается, что предоставляет сервисное обслуживание своим клиентам. Что же именно включают в себя Web
    Services?
    Объяснение придется начать издалека.
    Передача информации по компьютерным сетям должна удовлетворять двум противоречивым требованиям. Это надежность и скорость. Особенно важно обеспечить надежность связи и скорость передачи информации для компо- нентов распределенного приложения [10], работающих на разных машинах и часто на значительном удалении от друга. Распределенное приложе- ние должно выполняться как единое целое, без сбоев и задержек, как будто все оно целиком работает на одном компьютере.
    Надежность обеспечивается избыточностью информации: проверками по- ступающей информации, подтверждением ее получения, повторной переда- чей. Все эти приемы сильно загружают сеть и замедляют скорость пересыл- ки информации. Для увеличения скорости передачи информация сжимается и уплотняется. Придуманы изощренные способы кодирования, экономно использующие каждый бит. Сетевые протоколы задают правила формиро- вания сетевых пакетов, похожие на инструкции шифровальным отделам секретных служб. Сетевые приложения жестко привязываются к определен- ному протоколу, теряют переносимость, сфера их применения резко сужа- ется. Создаются различные технологии сетевого взаимодействия распреде- ленных компонентов: RPC (Remote Procedure Call), DCOM,
    (Remote
    Method Invocation), CORBA.
    Компьютерное сообщество разделилось, как человечество после Вавилон- ского столпотворения. Технологии RPC, DCOM, RMI плохо стыкуются друг с другом. Распределенное приложение приходится строить на основе только какой-то одной технологии. Это сильно ограничивает область его применения и затрудняет включение в приложение новых компонентов.

    Введение 9
    Технология Web Services создана фирмами IBM, Microsoft и UserLand для того, чтобы объединить компьютерный мир. Эта технология отказалась от упаковки и сжатия информации и предлагает прямо противоположный под- ход — по сети посылается простой "плоский" текст, записанный в байтовой кодировке ASCII, Latin СР866, СР1251,
    или в кодировках Unicode:
    UTF-8, UTF-16. Этим сразу решается проблема переносимости сетевой ин- формации — любой сервер легко прочитает обычный текст. Для выявления структуры пересылаемых документов их записывают на языке XML
    (extensible Markup Language, расширяемый язык разметки). Это не сужает область распространения документов, поскольку любой сервер в состоянии понять язык XML. Надо сделать только одно — стандартизировать структу- ру документа XML. Для этого в технологии Web Services разработан специ- альный протокол SOAP (Simple Object Access Protocol). Сообщение, запи- санное на языке XML по правилам протокола SOAP, может принять и об- работать любая Web-служба, на каком бы языке программирования она ни была написана, и в какой бы операционной системе она ни работала.
    Второе предложение технологии Web Services — использовать для передачи сообщений, написанных по правилам протокола SOAP, только самый рас- пространенный в Интернете, общедоступный и простой протокол HTTP
    (HyperText Transfer Protocol). Сервер, работающий по протоколу HTTP,
    можно легко развернуть на любой машине. Информация, предназначенная для HTTP-сервера, пропускается практически всеми брандмауэрами, что тоже удобно для распределенных приложений.
    Это предложение выполняется не столь строго. Web-службы могут взаимо- действовать и по почтовому протоколу SMTP (Simple Mail Transfer Protocol),
    и непосредственно транспортному протоколу TCP (Transmission Control
    Protocol).
    запрещены и другие протоколы.
    Технология Web Services не остановилась на создании единого протокола пересылки сообщений. Она создала и средства описания Web-службы. Сер- вер, на котором установлена Web-служба, предоставляет всем желающим ее описание. Описание выполняется на специально разработанном языке
    WSDL (Web Services Description Language, язык описания Web-служб). Это еще одна реализация языка XML. Клиент, обращающийся к Web-службе,
    читает ее описание и формирует свой запрос. Интересно, что разработаны программы, которые по готовой Web-службе создают ее описание на WSDL.
    Еще интереснее то, что есть программы, создающие, наоборот, Web-службу по ее описанию, сделанному на языке WSDL.
    Для того чтобы клиент не обшаривал весь Интернет в поисках нужной Web- службы, создаются реестры, хранящие информацию о местоположении
    Web-служб вместе с описанием предоставляемых ими услуг. Правила реги- страции Web-службы в реестре, а также правила хранения информации в реестре определяются еще одной реализацией XML — спецификацией

    Введение
    (Universal Discovery, Description and Integration). Многие известные фирмы, в числе которых IBM, Microsoft, Hewlett Packard, SAP AG, содержат свои реестры UDDI. Клиенту достаточно обратиться к реестру, найти в нем подходящую Web-службу, выбрать из реестра контактную информацию
    Web-службы и запросить у нее нужные услуги.
    Итак, технология Web Services стоит на "трех китах" — протоколах и специ- фикациях SOAP, WSDL и UDDI. "Черепаха", на которой они стоят — это протокол HTTP. Имея такое надежное основание, Web Services уверенно плывут по безбрежному морю Интернета. Кроме этих основополагающих протоколов, есть еще несколько спецификаций, решающих вопросы, воз- никающие при практическом построении Web-служб, например, вопросы безопасности информации. Они вводятся в книге по мере возникновения решаемых ими вопросов.
    Для быстрого развития Web Services нужны реализации спецификаций в виде библиотек и пакетов классов. Этим занимаются многие фирмы- производители программного обеспечения. Корпорация Microsoft поставля- ет программное обеспечение Web Services в рамках технологии Microsoft
    Описанию этой технологии посвящены многие публикации. На рус- ском языке уже вышла очень живо и доступно написанная книга Игоря
    Шапошникова [12]. Фирмы IBM, Sun Microsystems и многие другие компа- нии развивают Web Services как часть технологии Java. Поговорим об этом подробнее.
    Web Services и Java
    Создавая технологию Java, фирма Sun Microsystems, девиз которой: "Сеть —
    это компьютер", стремилась обеспечить создание межплатформенных при- ложений. Такое приложение пишется на любом языке, для которого есть компилятор в байт-коды Java. Приложение, откомпилированное в байт- коды, распространяется по Интернету и может быть выполнено на любом компьютере, имеющем JVM (Java Virtual Machine, виртуальная машина
    Java), без всяких дополнительных компиляций и инсталляций. При этом не надо компоновать приложение с библиотеками классов — библиотеки стан- дартизированы, они прилагаются к JVM и динамически компонуются во время выполнения приложения.
    Прекрасно! Не надо компилировать приложение под разные платформы,
    мучительно добиваясь совместимости, не надо подбирать под каждую плат- форму подходящие библиотеки классов, не надо публиковать в Интернете список версий приложения, разработанных под разные платформы, вместе со списком версий подобранных библиотек. Пользователю не надо выкачи- вать из Интернета "толстый" дистрибутив и необходимые версии библиотек и инсталлировать их на своем компьютере.

    Введение 11
    Почему же технология Java не вытеснила все другие технологии Интернета?
    Почему мы до сих пор используем CGI, ASP, PHP, JavaScript, Perl, Python?
    Все дело в последнем условии — на каждом компьютере должна работать виртуальная машина Java.
    говоря уже о том, что она есть не на всяком компьютере, у JVM, как у всякого приложения, есть разные производители и разные версии, не полностью совместимые между собой. Кроме того,
    JVM должна быть полностью совместима с операционной системой и обо- рудованием того компьютера, на котором она работает.
    Выясняется, что технология Java только частично решает проблему совмес- тимости. Она переносит эту проблему с самих приложений на виртуальную машину Java. Конечно, решить проблему совместимости различных моделей
    JVM гораздо проще, но до сих пор это не сделано полностью.
    С появлением Web Services эта проблема отпадает сама собой. Web-служба,
    построенная по технологии Java, может работать под управлением любой
    JVM. Ее легко встроить в любой J2EE-cepBep (Java 2 Enterprise Edition) или
    Web-контейнер.
    • Более того, Java облегчает создание и работу Web Services. В технологии
    Java уже есть все средства для их быстрой стандартную по- ставку JDK (Java Developer Kit, пакет разработчика на Java) входят сред- ства генерации документов XML вместе со средствами разбора готовых документов XML. Их удобно применять для создания и чтения сообще- ний Web-службы.
    На языке Java написаны самые популярные анализаторы XML- документов, программы для их проверки и преобразования и другие го- товые средства работы с XML-документами .
    • Сервлеты и страницы JSP (Java Server Page) позволяют организовать Web
    Services с минимальными затратами усилий. Уже одних сервлетов вполне достаточно для создания полноценных Web-служб.
    • Компоненты EJB (Enterprise JavaBeans) дают возможность создать по- вторно применяемые модули Web-служб, а также связать их с базами данных и другими источниками информации.
    • Новые библиотеки классов, специально разработанные для создания
    Web Services, предоставляют готовые компоненты Web-служб. Очень час- то можно просто собрать Web-службу из готовых компонентов.
    • Во все средства быстрой разработки (RAD) и интегрированные среды разработки (IDE, Integrated Development Environment) на языке Java уже встроены "мастера", собирающие Web-службу несколькими щелчками
    Таким образом, технология Java прекрасно сочетается с технологией Web
    Services. Поэтому можно прийти к выводу, что дальнейшее развитие Web

    Введение
    Services будет тесно связано с Java. Эта книга знакомит вас с Java Web
    Services — самой мощной ветвью технологии Web Services.
    Структура книги
    Основной язык, постоянно используемый при создании Web Services — это язык XML. Поэтому в главе 1 подробно изложены все необходимые конст- рукции XML и его реализаций. Особенно подробно изложен язык XSD
    (XML Schema Definition Language, язык определения схем XML), описы- вающий элементы документа. Это первое описание языка XSD, сделанное на русском языке.
    Кроме того, в главе 1 подробно рассматриваются интерфейсы и классы Java,
    предназначенные для чтения, анализа и преобразования документов XML, a также готовые инструментальные средства, реализующие эти интерфейсы, и использующие эти классы.
    Глава 2 посвящена описанию работы Web Services на конкретных примерах.
    Прочитав эту главу, вы получите полное представление о структуре Web
    Services, механизмах их работы, поймете, как создаются Web-службы и как клиенты используют их услуги. Здесь приведено строгое определение Web
    Services и его реализаций различными фирмами-производителями средств создания Web-служб. Дан обзор наиболее распространенных пакетов клас- сов, на которых основаны Web Services, и разобраны наиболее популярные инструментальные средства. Здесь же описывается средство описания Web- служб — язык WSDL — и средство регистрации Web-служб в Интернете —
    язык UDDI.
    Прочитав главу 2, вы получите полное представление о Web Services и смо- жете свободно ориентироваться в публикациях, посвященных Web-службам.
    Для создания Web-служб нужны более глубокие сведения. В главах 3, 4 и 5
    подробно рассматриваются новейшие версии "трех китов", на которых стоят
    Web Services — протоколов SOAP, WSDL и UDDI. Здесь же приведены про- граммные средства, реализующие эти протоколы, показаны приемы их применения, приведены многочисленные примеры.
    К этим главам примыкает глава 6, в которой разобраны внутренние меха- низмы Java Web Services. Прочитав эту главу, вы поймете, как технология
    Java реализует протоколы и спецификации Web Services. Освоив эти меха- низмы, вы сможете изменять исходные тексты используемых вами про- граммных продуктов, добиваясь полного решения ваших задач, или само- стоятельно создавать реализации Java Web Services.
    Большинство Web-служб, созданных с применением Java, работает в составе серверов приложений. Серверы приложений, как правило, реализуют ин-

    Введение
    терфейсы, входящие в состав J2EE. Правила встраивания Web-служб в J2EE
    и особенности их работы в составе J2EE-cepBepa изложены в главе 7. Про- читав эту главу, вы поймете, какое место занимают Web-службы среди дру- гих компонентов J2EE-cepBepa приложений, и как Web-службы взаимодей- ствуют с другими компонентами сервера. Кроме того, здесь рассказано, как установить готовую Web-службу в приложений.
    В Web-технологиях важное место занимают вопросы безопасности. Понача- лу Web Services не рассматривали их, предпочитая переложить эти вопросы на серверы, содержащие Web-службы, и на нижележащие протоколы. Очень скоро оказалось, что от проблемы безопасности не уйти, и в технологию
    Web Services были введены спецификации, обеспечивающие безопасность предоставления Web-услуг. Они обсуждаются в главе 8. На момент написа- ния книги выходили только черновые версии этих спецификаций. Поэтому
    глава 8 носит обзорный характер.
    Наконец, глава 9 содержит обзор новейших веяний в технологии Web
    Services и позволяет проследить возможные пути ее дальнейшего развития.

    ГЛАВА 1
    Обработка документов XML
    В развитии Web-технологии огромную роль сыграл язык HTML (HyperText
    Markup Language, язык разметки гипертекста) . Любой человек, совсем не знакомый с программированием, мог бы за полчаса понять принцип метки текста и за пару дней изучить теги HTML. Пользуясь простейшим текстовым редактором он мог бы написать свою страничку HTML, тут же посмотреть ее в своем браузере, испытать чувство глубокого удовлетворе- ния, и гордо выставить в Интернете свой шедевр.
    Замечательно! Не надо месяцами изучать запутанные языки программиро- вания, явно предназначенные только для яйцеголовых "ботаников", осваи- вать сложные алгоритмы, возиться с компиляторами и отладчиками, раз- множать свое творение на дисках. Очень скоро появились текстовые редак- торы, размечающие обычный "плоский" текст тегами HTML. Разработчику осталось только поправлять готовую страницу HTML, созданную таким ре- дактором.
    Простота языка HTML привела к взрывному росту числа сайтов, пользова- телей Интернета и авторов многочисленных Web-страничек. Обычные поль- зователи компьютеров ощутили себя творцами, получили возможность зая- вить о себе, высказать свои мысли и чувства, найти в Интернете своих еди- номышленников.
    Ограниченные возможности языка HTML быстро перестали удовлетворять поднаторевших разработчиков, почувствовавших себя "профи". Набор тегов языка HTML строго определен и должен одинаково пониматься всеми брау- зерами. Нельзя ввести дополнительные теги или указать браузеру, как сле- дует отобразить на экране содержимое того или иного тега. Введение таблиц стилей CSS (Cascading Style Sheet) и включений на стороне сервера SSI
    (Server Side Include) лишь ненадолго уменьшило недовольство разработчи-

    Глава 1. Обработка документов XML 15
    ков. Профессионалу всегда не хватает средств разработки, он постоянно испытывает потребность добавить к ним какое-то свое средство, позволяю- щее воплотить все его фантазии.
    Такая возможность есть. Еще в 1986 году стал стандартом язык создания языков разметки SGML (Standard Generalized Markup Language), с помощью которого и был создан язык HTML. Основная особенность языка SGML
    заключается в том, что он позволяет создать новый язык разметок, опреде- лив набор тегов создаваемого языка. Каждый конкретный набор тегов, соз- данный по правилам SGML, снабжается описанием DTD (Document
    Definition) — определением типа документа, разъясняющим связь тегов меж- ду собой и правила их применения. Специальная программа — драйвер принтера или SGML-браузер — руководствуется этим описанием для печати или отображения документа на экране дисплея.
    В это же время выявилась еще одна, самая важная область применения языков разметки — поиск и выборка информации. В настоящее время подавляющее большинство информации хранится в реляционных базах данных. Они удобны для хранения и поиска информации, представимой в виде таблиц: анкет, ведомостей, списков и тому подобного, но неудоб- ны для хранения различных документов, планов, отчетов, статей, книг,
    не представимых в виде таблицы. Тегами языка разметки можно задать структурную, а не визуальную разметку документа, разбить документ на главы, параграфы и абзацы или на какие-то другие элементы, выделить важные для поиска участки документа. Легко написать программу, ана- лизирующую размеченный такими тегами документ и извлекающую из него нужную информацию.
    Язык SGML оказался слишком сложным, требующим тщательного и объе- мистого описания элементов. Он применяется только в крупных проектах,
    например, для создания единой системы документооборота крупной фир- мы. Скажем, man-страницы Solaris Operational Environment написаны на специально сделанной реализации языка SGML.
    Золотой серединой между языками SGML и HTML стал язык разметок
    XML. Это подмножество языка SGML, избавленное от излишней сложно- сти, но позволяющее разработчику Web-страниц создавать свои собствен- ные теги. Язык XML достаточно широк, чтобы можно было создать все нужные теги, и достаточно прост, чтобы можно было быстро их описать.
    Создавая описание документа на языке XML надо, прежде всего, продумать структуру документа. Приведем пример. Пусть мы решили, наконец, упоря- дочить свою записную книжку с адресами и телефонами. В ней записаны фамилии, имена и отчества родственников, сослуживцев и знакомых, дни их рождения, их адреса, состоящие из почтового индекса, города, улицы,
    дома и квартиры, и телефоны, если они есть: рабочие и домашние. Мы

    Разработка Web-служб средствами Java
    придумываем теги для выделения каждого из этих элементов, продумываем вложенность тегов и получаем структуру, показанную в листинге 1.1.
    Листинг_1.1._Пример_XML-документа'>Листинг 1.1. Пример XML-документа
    notebook SYSTEM "ntb.dtd">


    23-15
    123456


    Глава 1. Обработка документов XML 77


    17
    23456K/zip>


    Документ XML начинается с необязательного пролога, состоящего из двух частей.
    В первой части пролога — объявлении XML (XML declaration), — записанной в первой строке листинга 1.1, указывается версия языка XML, необязатель- ная кодировка документа и отмечается, зависит ли этот документ от других документов XML
    По умолчанию принимается кодировка UTF-8.
    Все элементы документа XML обязательно должны содержаться в корневом
    элементе (root element), в листинге 1.1 это — элемент . Имя кор- невого элемента считается именем всего документа и указывается во второй части пролога, называемой объявлением типа документа (Document
    Declaration).
    путайте с определением типа документа DTD!) Имя доку- мента записывается после слова
    DOCTYPE.
    Объявление типа документа запи- сано во второй строке листинга 1.1. В этой части пролога после слова
    DOCTYPE
    и имени документа в квадратных скобках идет описание DTD:
    [ Сюда заносится описание DTD ]>
    Очень часто описание DTD составляется сразу для нескольких документов
    XML. В таком случае его удобно записать отдельно от документа. Если опи- сание DTD отделено от документа, то во второй части пролога вместо квад- ратных скобок записывается одно из слов
    SYSTEM ИЛИ
    За словом
    SYSTEM
    идет
    (Universal Resource Identifier, универсальный идентифика-

    18
    Разработка Web-служб средствами Java
    тор ресурсов) файла с описанием DTD, а за словом
    PUBLIC,
    кроме того,
    можно записать дополнительную информацию.
    XML-документ состоит из элементов. Элемент начинается открывающим
    тегом, потом идет необязательное тело элемента и в заключении — закры-
    вающий тег:
    элемента
    Закрывающий тег содержит наклонную черту, после которой повторяется имя открывающего тега.
    Язык XML, в отличие от языка HTML, требует обязательно записывать за- крывающие теги. Если у элемента нет тела и закрывающего
    (empty —
    пустой элемент), то его открывающий тег должен заканчиваться символами "/>", например:
    Сразу надо сказать, что язык XML, в отличие от HTML, различает регистры букв.
    Из листинга 1.1 видно, что элементы документа XML могут быть вложе- ны друг в друга. Надо следить за тем, чтобы элементы не пересекались, а полностью вкладывались друг в друга. Как уже говорилось выше, все элементы, составляющие документ, вложены в корневой элемент этого документа. Тем самым документ наделяется структурой дерева вложен- ных элементов. На рис. 1.1 показана структура адресной книжки, опи- санной в листинге 1.1.
    work-phone home-phone
    Рис.
    Дерево элементов документа XML
    У открывающих тегов XML могут быть атрибуты. Например, имя, отчество и фамилию можно записать как атрибуты first, second и surname тега
    ;
    />
    В отличие от языка HTML в языке XML значения атрибутов обязательно надо заключать в кавычки или апострофы.

    Глава 1. Обработка документов XML 19
    Атрибуты удобны для описания простых значений. У каждого гражданина
    России, уважающего режим, обязательно есть одно имя, одно отчество и одна фамилия. Их удобно записывать атрибутами. Но у гражда- нина России может быть несколько телефонов, поэтому их номера удобнее оформить как элементы и
    вложенные в эле- мент а не атрибуты открывающего тега
    За- метьте, что элемент с атрибутами пустой, у него нет тела, следова- тельно, не нужен закрывающий тег. Поэтому тег с атрибутами за- вершается символами "/>". В листинге 1.2 приведена измененная адресная книжка.
    Листинг
    Пример XML-документа с атрибутами в открывающем теге
    version="1.0"
    notebook SYSTEM "ntb.dtd">


    23-15

    67

    20 Разработка Web-служб средствами Java
    />

    17
    23456K/zip>

    Атрибуты открывающего тега удобны и для указания типа элемента. На- пример, мы не уточняем, в городе живет наш родственник, в поселке или деревне. Можно ввести в тег атрибут type, принимающий одно из значений: город, поселок, деревня. Например:
    Для описания адресной книжки нам понадобились открывающие теги
    ,
    ,
    , , , , и соответствующие им закрывающие теги, помеченные наклонной чертой. Теперь необходимо дать их описание.
    В описании указываются только самые общие признаки логической взаимо- связи элементов и их тип.
    Элемент может содержать в себе только нуль или больше элементов
    • Элемент содержит ровно один элемент нуль или не- сколько элементов
    и нуль или один элемент
    • Элемент пустой.
    • В открывающем теге три атрибута first, second, surname, значе- ния которых — строки
    • Элемент
    содержит по одному элементу , и

    Глава 1. Обработка документов XML 21
    • Элементы и содержат по одной текстовой строке.
    • Элемент содержит одно целое число.
    • У открывающего тега есть один необязательный атрибут type,
    принимающий одно из трех значений город, поселок или деревня. Зна- чение по умолчанию город.
    Необязательный элемент содержит нуль или более элемен- тов
    И
    • Элементы и
      1   2   3   4   5   6   7   8   9   ...   21


    написать администратору сайта