WWW.BOOK.LIB-I.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Электронные ресурсы
 

«Тимур Машнин Санкт-Петербург «БХВ-Петербург» УДК 681.3.06 ББК 32.973.26-018.2 М38 Машнин Т. С. М38 Web-сервисы Java. — СПб.: БХВ-Петербург, 2012. — ...»

Тимур Машнин

Санкт-Петербург

«БХВ-Петербург»

УДК 681.3.06

ББК 32.973.26-018.2

М38

Машнин Т. С.

М38 Web-сервисы Java. — СПб.: БХВ-Петербург, 2012. — 560 с.: ил. —

(Профессиональное программирование)

ISBN 978-5-9775-0778-3

Рассмотрены основы технологии Web-сервисов в спецификациях первого и

второго уровня, реализация технологии Web-сервисов в виде стандартов платформы Java и в таких распространенных Java-стеках Web-сервисов, как Metro, СXF и

Axis2. Материал книги сопровождается более 70 примерами с подробным анализом исходных кодов.

На сайте издательства находятся примеры проектов из книги, а также дополнительные материалы.

Для программистов УДК 681.3.06 ББК 32.973.26-018.2

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

Главный редактор Екатерина Кондукова Зам. главного редактора Игорь Шишигин Зав. редакцией Григорий Добин Редактор Анна Кузьмина Компьютерная верстка Ольги Сергиенко Корректор Зинаида Дмитриева Дизайн серии Инны Тачиной Оформление обложки Марины Дамбиевой Зав. производством Николай Тверских Подписано в печать 31.10.11.

Формат 70 1001/16. Печать офсетная. Усл. печ. л. 45,15.

Тираж 1200 экз. Заказ № "БХВ-Петербург", 190005, Санкт-Петербург, Измайловский пр., 29.

Санитарно-эпидемиологическое заключение на продукцию № 77.99.60.953.Д.005770.05.09 от 26.05.2009 г. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека.

Отпечатано с готовых диапозитивов в ГУП "Типография "Наука" 199034, Санкт-Петербург, 9 линия, 12 © Машнин Т. С., 2011 ISBN 978-5-9775-0778-3 © Оформление, издательство "БХВ-Петербург", 2011 Оглавление Введение

Глава 1. Архитектура XML Web-сервисов

Модель Message Oriented

Модель Service Oriented

Модель Resource Oriented

Модель Policy

Архитектура Service Oriented Architecture (SOA)

Основные технологии архитектуры Web-сервисов

XML

XML Namespaces

XML Infoset

XML Schema

SOAP 1.2

WSDL 2.0

Практическое применение Web-сервисов

UDDI

ebXML

DISCO

JAXR

Языки WS-BPEL и WS-CDL

WS-BPEL 2.0

WS-CDL 1.0

Глава 2. Расширения технологии Web-сервисов

WS-Policy, WS-PolicyAttachment и WS-PolicyAssertions

WS-Addressing

WS-Security

WS-Trust

WS-SecureConversation

WS-SecurityPolicy

WS-Federation

WS-Transfer

WS-ResourceTransfer и WS-Fragment

Оглавление WS-MetadataExchange

WS-Enumeration

WS-Eventing

WS-Management

WS-Discovery

WS-ReliableMessaging

WS-ReliableMessaging Policy

WS-MakeConnection

WS-Coordination

WS-AtomicTransaction

WS-BusinessActivity

Глава 3. Java Web-сервисы

JAXM и SAAJ

Пример Web-сервиса и клиента на основе JAXM и SAAJ

JAXP

Пример использования JAXP

JAXB

Инструменты xjc и schemagen

Binding Declaration

JAXB API

Пример использования JAXB

JAX-RPC

Инструменты wscompile и wsdeploy

JAX-RPC API

Пример использования JAX-RPC

JAX-WS

JAX-WS API

Модель программирования JAX-WS

Модель программирования на стороне сервера

Модель программирования на стороне клиента

Развертывание JAX-WS Web-сервисов и JAX-WS-клиентов





Пример создания JAX-WS Web-сервиса и JAX-WS-клиента

JAX-RS

JAX-RS API

Модель программирования и развертывания JAX-RS Web-сервисов

Формат JSON

WADL

Применение технологии JAX-RS

Глава 4. Проект Metro

Тестирование стека Metro

Оптимизация передачи двоичных данных (MTOM)

Адресация

Надежная доставка сообщений

Система безопасности

Создание клиента Web-сервиса

Опция Проверка подлинности имени пользователя с помощью симметричного ключа

Оглавление 5 Опция Username Authentication with Password Derived Key

Опция Безопасность совместных сертификатов

Опция Симметричная привязка к маркеру Kerberos

Опция Безопасность транспорта (SSL)

Опция Проверка подлинности сообщения по SSL

Опция Проверка подлинности SAML по SSL

Опция Одобрение сертификата

Опция Подтверждение подлинности отправителя SAML сертификатом........ 366 Опция Держатель ключа SAML

Опция Выпущенный STS маркер

Опция Выпущенный STS маркер с сертификатом службы

Опция Выпущенный STS маркер одобрения

Опция Выпущенный STS маркер поддержки

Поддержка протокола SOAP/TCP

Поддержка кодировки Fast Infoset

Поддержка WS-MakeConnection

Глава 5. Проект Apache CXF

Архитектура платформы CXF

Создание SOAP Web-сервисов с использованием CXF API

Связывание данных Aegis

Связывание данных XMLBeans

Опции features и обработчики Interceptors

Протоколы передачи сообщений

Поддержка протокола SOAP/HTTP

Поддержка протокола XML/HTTP

Поддержка протокола HTTPS

Apache Camel, JMS и Apache ActiveMQ

Проект Apache Camel

Проект Apache ActiveMQ

Локальный транспорт

Поддержка MTOM

Поддержка спецификаций WS-*

WS-Addressing

WS-ReliableMessaging

WS-Security

WS-SecurityPolicy

WS-Trust

WS-SecureConversation

JAX-RS

JavaScript

Глава 6. Проект Axis2

Конфигурационный файл axis2.xml

Архив AAR и развертывание Web-сервиса

Модули Axis2

Модель программирования Axis2 Web-сервисов

Axis2 XML-модель AXIOM

Client API

Оглавление Поддержка архитектуры REST

Связывание данных

ADB (Axis2 Databinding)

XMLBeans

JiBX

JAXB

Поддержка MTOM

Поддержка протокола HTTPS

HttpClient и аутентификация

Транспортные протоколы проекта Axis2

TCP

JMS

WS-ReliableMessaging

WS-Security

Приложение. Описание электронного архива

Список литературы

Предметный указатель

Введение Технология Web-сервисов — это технология создания распределенных систем, составленных из взаимодействующих между собой программных продуктов, созданных и работающих на основе различных платформ.

Web-сервисы призваны согласовывать работу больших, состоящих из множества частей приложений, предоставляя для приложений бизнес-функции обмена данными.

Помимо функции обмена данными между различными приложениями и платформами, Web-сервисы могут выступать как повторно-используемые компоненты приложения, предоставляющие разнообразные сервисы — от прогноза погоды до перевода с одного языка на другой.

Web-сервисы представляют собой программные компоненты, имеющие идентификатор URI, и взаимодействие с которыми осуществляется по Интернету с помощью открытых протоколов.

Коммуникация с Web-сервисами может выполняться с помощью различных транспортных протоколов, таких как HTTP, HTTPS, FTP, SMTP, BEEP, при этом Webсервисы можно подразделить на три вида: SOAP Web-сервисы, ориентированные на модель RPC — вызов удаленных процедур, XML Web-сервисы, ориентированные на сообщения, и RESTful Web-сервисы.

Первая группа Web-сервисов — это Web-сервисы, взаимодействие с которыми производится с использованием XML-сообщений по SOAP-протоколу (Simple Object Access Protocol), и имеющие интерфейсы, описанные в формате WSDL (Web Services Description Language). Такое описание интерфейса сервиса обеспечивает автоматическую генерацию кода на клиентской стороне, необходимого для связи с сервисом. Описание WSDL Web-сервиса может быть доступно клиенту с помощью реестра UDDI (Universal Description, Discovery, and Integration), в котором Webсервис предварительно зарегистрирован. SOAP-протокол может использовать различные транспортные протоколы — HTTP, FTP SMTP и др., однако чаще всего SOAP используется поверх HTTP. SOAP-сообщения, участвующие в обмене между клиентом и SOAP RPC Web-сервисом, имеют строго определенную структуру для передачи имени вызываемой удаленной процедуры и ее параметров, а также результата ее вызова.

Введение Вторая группа Web-сервисов — это XML Web-сервисы, ориентированные на сообщения. Эти XML Web-сервисы обеспечивают низкоуровневую обработку XMLсообщений, при этом Web-сервис обрабатывает полученные XML-данные целиком, как они есть, и полностью формирует ответное XML-сообщение. XML Webсервисы могут передавать и получать сообщения как в формате SOAP, так и в чистом XML-формате.

Третья группа Web-сервисов — это RESTful Web-сервисы, представляющие удаленные ресурсы, доступные с помощью HTTP-запросов. RESTful Web-сервисы обеспечивают взаимодействие с удаленными ресурсами, передавая клиенту их представление. RESTful Web-сервисы идентифицируются URL-адресом и обрабатывают HTTP-методы GET, PUT, POST и DELETE в ответ на запрос клиента. Технология REST Web-сервисов также может использовать WSDL-описание и SOAPпротокол для передачи сообщений, но может обходиться и без них.

Альтернативой использования технологии Web-сервисов для создания распределенных систем является применение технологий CORBA (Common Object Request Broker Architecture), Java RMI (Remote Method Implementation) и DCOM (Distributed Component Object Model).

Технология Web-сервисов развивается под эгидой организации W3C.

ПРИМЕЧАНИЕ World Wide Web Consortium (W3C) — международное сообщество, состоящее из постоянных членов (в 2009 году 338 организаций), штатных сотрудников и общественности, цель которого — разработка стандартов Web.

Стандарты сообщества W3C объединены в следующие группы:

Web-дизайн и приложения — стандарты для создания и отображения Webстраниц, включая обеспечение их доступности и интернационализации. Данная группа описывает такие технологии, как HTML, CSS, SVG, Ajax и др., а также создание Web-приложений для мобильных устройств;

Web-архитектура — описывает базисные технологии и принципы, включая URI и HTTP;

семантическая Web-информация — блок посвящен технологиям Web-данных, позволяющим создавать хранилища Web-данных, словари, а также определять правила для управления данными;

XML-стандарты — представляет такие стандарты, как XML, XQuery, XML Schema, XSLT, XSL-FO, Efficient XML Interchange (EXI) и др.;

Web-сервисы — описывает технологии обмена сообщениями;

Web-устройства — технологии Web-доступа везде, в любое время и с использованием любого устройства;

браузеры и инструменты — технологии для разработки программного обеспечения Web.

W3C-группа Web-сервисы содержит следующие подгруппы спецификаций (http://www.w3.org/standards/webofservices/).

Введение 9 Данные.

XML Schema — спецификации посвящены языку описания структуры XMLдокумента. XML-схема используется для проверки XML-документа на соответствие XML-схеме, после чего могут быть созданы объекты, соответствующие структуре XML-документа.

XML-binary Optimized Packaging — спецификации определяют способ включения бинарных данных в XML-документ. Стандарт включения бинарных данных оптимизирует передачу вместе с XML-документом двоичных данных большого объема, таких как изображения и различного рода мультимедийных данных.

XML — спецификации описывают язык Extensible Markup Language (XML).

RDF — спецификации описывают платформу Resource Description Framework (RDF) для представления данных в Web-сети.

GRDDL — спецификации описывают механизм Gleaning Resource Descriptions from Dialects of Languages извлечения RDF-контента из XMLдокументов.

Протоколы.

HTTP — спецификации описывают механизм расширения HTTP-протокола, включая расширение HTTP-протокола для электронной торговли, альтернативный HTTP-протоколу — протокол HTTP-NG и его части — протокол SMUX, протокол Binary Wire Protocol и Web Interface, представление HTTPпротокола с использованием RDF, библиотеку API для получения событий сервера с помощью HTTP-протокола.

SOAP — спецификации описывают SOAP-протокол обмена XML-сообщениями.

Web Services Addressing — спецификации определяют механизм обращения к Web-сервисам и обмена с ними сообщениями.

Web Services Architecture — спецификации описывают архитектуру и механизм работы технологии Web-сервисов.

Описание сервиса.

WSDL — спецификации определяют язык описания Web-сервисов Web Services Description Language.

Web Services Choreography — спецификации определяют язык Web Services Choreography Description Language (WS-CDL) описания последовательности и условий обмена сообщениями и взаимодействия Web-сервисов.

Web Services Policy — спецификации описывают механизм обеспечения требований и условий взаимодействия с Web-сервисами, позволяя Web-сервису ассоциироваться с набором правил — политикой, которой должен придерживаться потребитель Web-сервиса.

Введение Semantic Annotation for WSDL and XML Schema — спецификации определяют расширение WSDL для классификации, регистрации/обнаружения, сопоставления, композиции и вызова Web-сервисов.

Service Modeling Language (SML) — спецификации описывают язык моделирования сложных систем взаимосвязанных сервисов и ресурсов.

Web Services Resource Access — спецификации определяют основанные на SOAP протоколы для передачи больших данных, получения уведомлений о событиях Web-сервисов, управления основанными на Web-сервисах ресурсами.

Безопасность.

XML Encryption — спецификации описывают механизм шифрования данных и представления результатов шифрования в XML-документе.

XML Signature — спецификации описывают механизм цифровой подписи XML-документов.

XML Key Management Specification (XKMS) — спецификации описывают протокол распространения и регистрации публичных ключей цифровой подписи XML-документов.

Интернационализация — спецификации описывают интернационализацию Webсервисов, HTML- и XML-документов.

Технология Web-сервисов впервые официально была включена в качестве стандарта в спецификацию J2EE 1.4 в 2003 году. При этом основой Java-технологии Webсервисов стала спецификация Java API for XML-Based RPC (JAX-RPC), которая вместе с технологией Java APIs for XML Messaging (или SOAP with Attachments API for Java (SAAJ)) обеспечивала поддержку функциональной совместимости Webсервисов. С тех пор технология Web-сервисов платформы Java прошла большой эволюционный путь до спецификации Java API for XML-Based Web Services (JAXWS), ставшей стандартом платформы Java EE 5.

Знание технологии Web-сервисов является необходимым условием профессиональной квалификации программиста. Это видно из анализа требований к Javaпрограммисту в вакансиях на рынке труда (табл. В1).

Таблица В1. Требования к знаниям и опыту Java-программиста на рынке труда

–  –  –

В данной книге предлагаются к рассмотрению основы самой технологии Webсервисов, реализации технологии Web-сервисов в виде стандартов платформы Java и в таких распространенных Java-стеках Web-сервисов, как Metro, Apache CXF и Axis2.

Стек Metro представляет стек Web-сервисов, состоящий из реализаций технологий JAX-WS, JAXB и WSIT. Технология Metro является частью платформы Java EE и интегрирована с сервером GlassFish, позволяя создавать и развертывать безопасные и надежные Web-сервисы с поддержкой транзакций. При этом технология Metro гарантирует совместимость между Web-сервисами платформ Java EE и Microsoft.NET в приложениях, основанных на архитектуре Service Oriented Architecture (SOA).

Стеки Apache CXF и Axis2 представляют собой открытые платформы со средой выполнения для разработки и развертывания Web-сервисов, обеспечивающие поддержку спецификаций как самой технологии Web-сервисов, так и стандартов ее реализации платформой Java.

Введение ГЛ АВ А 1

Архитектура XML Web-сервисов

Технология Web-сервисов обеспечивает взаимодействие между приложениями, работающими на различных платформах, с помощью программных компонентов — Web-сервисов.

Web-сервисы — это программные компоненты, которые имеют интерфейс, описанный в формате, пригодном для компьютерной обработки, как правило — это WSDL-формат, и взаимодействие с которыми осуществляется согласно их WSDLописанию с помощью сообщений, передаваемых обычно по HTTP-протоколу.

Web-сервис является ресурсом, который характеризуется URI-адресом. При этом интерфейс Web-сервиса представляет его абстрактную функциональность, а конкретная реализация интерфейса Web-сервиса обеспечивает отправку и получение сообщений при взаимодействии клиента с Web-сервисом.

Различные реализации интерфейса Web-сервиса по-разному реализуют его общую функциональность, предоставляя многообразие услуг в рамках одного сервисного набора.

Конкретную реализацию интерфейса Web-сервиса обеспечивает агент — программный компонент, осуществляющий отправку и получение сообщений и принадлежащий поставщику сервиса. Клиент, осуществляющий запрос к Web-сервису с помощью клиентского приложения, также именуемого агентом, называется потребителем сервиса.

Как было сказано, взаимодействие с Web-сервисом осуществляется с помощью обмена сообщениями. Для того чтобы такой обмен был успешным, его механизм должен быть определен для потребителя сервиса его поставщиком. Такое определение механизма обмена сообщениями обеспечивается WSDL-описанием Webсервиса.

WSDL-описание Web-сервиса определяет формат сообщений, участвующих в обмене, тип передаваемых данных, протокол передачи сообщений и адреса доставки сообщений Web-сервису.

Общепризнанным кроссплатформенным форматом обмена сообщений является XML-формат.

Глава 1

Архитектура XML Web-сервисов описывается набором моделей:

Message Oriented Model — модель описывает сообщения Web-сервиса, включая структуру сообщений и механизм их доставки;

Service Oriented Model — модель характеризует сервис, выполняемые действия при взаимодействии с сервисом, агентов поставщиков и потребителей сервиса, а также определяет метаданные, используемые для описания сервиса;

Resource Oriented Model — модель описывает Web-сервисы как ресурсы, идентифицируемые URI-адресом, принадлежащие поставщикам сервиса и предоставляемые потребителям сервиса;

Policy Model — модель описывает условия доступа к ресурсам.

Модель Message Oriented Модель Message Oriented Model (MOM) описывает сообщения и их обработку, включая структуру сообщений, отношения между отправителем и получателем сообщений, а также механизм их передачи.

MOM определяет понятия адреса, политики доставки, сообщения, тела сообщения, корреляции сообщения, оболочки сообщения, модели обмена сообщениями Message Exchanage Pattern (MEP), заголовка сообщения, получателя сообщения, надежности сообщения, отправителя сообщения, последовательности сообщений, транспортировки сообщений.

Для того чтобы сообщение было доставлено получателю, необходим адрес доставки сообщения.

Формат адреса доставки сообщения зависит от механизма транспортировки сообщения. В случае HTTP-протокола передачи сообщений — это URL-адрес получателя.

Адрес доставки сообщения может содержаться в самом сообщении, как правило, в его оболочке.

Политика доставки — это условия доставки сообщения, которые могут заключаться в гарантиях доставки сообщения, его кодировке при передаче, формировании отчета о доставке и т. д.

Модель MOM определяет сообщение как единицу данных, передаваемую от одного агента другому. Структура сообщений определяется в WSDL-описании Webсервиса.

Сообщение состоит из конверта (оболочки), одного или нескольких заголовков и тела сообщения. Конверт сообщения служит контейнером для его компонентов и может содержать информацию об адресе доставки сообщения. Заголовок сообщения содержит информацию о сообщении, относящуюся к системе безопасности, механизму транзакций, маршрутизации сообщения и т. д. Заголовок сообщения может обрабатываться независимо от самого сообщения, поэтому каждое сообщение может иметь различные заголовки, определяющие способы обработки тела соАрхитектура XML Web-сервисов 15 общения. Тело сообщения содержит его контент или адрес соответствующего ресурса данных.

Клиент может вызывать Web-сервис с помощью простых HTTP-запросов GET и POST. В случае GET-запроса заголовок сообщения — это HTTP-заголовок, а параметры URL — это тело сообщения. В случае POST-запроса заголовок сообщения — это HTTP-заголовок, а тело сообщения — это передаваемые данные.

В ответ на HTTP GET- и POST-запросы XML Web-сервис передает клиенту сообщения в XML-формате.

Если клиент взаимодействует с Web-сервисом по SOAP-протоколу, тогда сообщения, участвующие в обмене, имеют SOAP-структуру, состоящую из конверта, заголовков и тела.

При обмене сообщениями с Web-сервисом устанавливается соответствующий контекст, в котором сообщение запроса ассоциируется с сообщением ответа, что важно в случае асинхронного обмена.

Обмен сообщениями с Web-сервисом регламентируется шаблоном Message Exchange Pattern (MEP), который определяет поток сообщений (последовательность) между агентами, включая обработку ошибок и связи между входящими и выходящими сообщениями.

Шаблоны MEP могут описывать обмен сообщениями не только с одним Webсервисом, но и последовательности, в которых Web-сервисы взаимодействуют друг с другом.

Модель MOM определяет надежность и гарантированность сообщения как степень уверенности, что сообщение будет доставлено в необходимом порядке. Механизм надежности и гарантированности уменьшает ошибки и обеспечивает информацию о статусе доставки, делая возможным, в случае возникновения ошибки доставки, повторную отправку сообщения и восстановления его порядка доставки.

Модель Service Oriented Модель Service Oriented Model (SOM) описывает сервис и действия.

Модель SOM определяет сервис как ресурс, представляющий возможность выполнения задач, реализующих функциональность, которая определена поставщиком сервиса. Чтобы сервис мог использоваться, он должен быть реализован хотя бы одним агентом.

Web-сервис, так же как и Web-ресурс, идентифицируется URI-адресом, однако главное отличие Web-сервиса от Web-ресурса в том, что Web-сервис необязательно должен иметь представление — данные состояния ресурса в общедоступных форматах XML, HTML, CSS, JPEG, PNG, получаемые с помощью метода HTTP GET.

Web-сервис имеет свое описание, которое представляет собой набор документов, подлежащий компьютерной обработке и содержащий описание интерфейса Webсервиса и его поведения. Описание Web-сервиса может быть реализовано с помощью языка Service Description Language (SDL) в виде набора XML-документов.

Глава 1 Описание Web-сервиса может использоваться для его конструирования, развертывания, определения местонахождения, установления связи между агентами потребителя и поставщика сервиса.

Web-сервис ассоциируется с действиями, решающими определенные задачи, которые представляют функциональность сервиса. Модель SOM определяет действие как операцию, которая может быть выполнена агентом в результате получения или отправки сообщения или другого изменения состояния. Обычно действия реализуются путем выполнения фрагмента программы, представляющей агента получателя или отправителя сообщения.

Агент — это программа, исполняющая действия и реализующая потребителя или поставщика Web-сервиса.

Последовательность и условия, при которых сложная система взаимодействующих между собой агентов обменивается сообщениями, описываются хореографией Webсервисов. Хореография Web-сервисов — это модель, описывающая последовательность операций, состояний и условий, контролирующих взаимодействие сервисов.

Результатом такого взаимодействия является выполнение определенной задачи, которую решает поставщик сервиса перед его потребителем.

Хореография Web-сервисов может описываться языком Choreography Description Language (CDL), который определяет композицию сервисов, их роли и связи, а также управление состоянием системы связанных сервисов.

Последовательность и условия, при которых один Web-сервис вызывает другие Web-сервисы для решения конкретной задачи, определяются оркестровкой Webсервисов.

Модель Resource Oriented Модель Resource Oriented Model (ROM) описывает ресурсы.

Модель ROM определяет ресурс как объект, имеющий имя-идентификатор, свое представление и собственника, обладающего правом назначать политику ресурса, которая определяет правила взаимодействия с ресурсом.

Web-сервисы являются разновидностью ресурсов, которые имеют описание, пригодное для компьютерной обработки и содержащее идентификатор ресурса в виде URI-адреса. С помощью описания потребитель узнает о полезности ресурса и устанавливает связь с ним. Описание облегчает поиск и доступ к ресурсу, включая в себя информацию о местонахождении ресурса, способах доступа к ресурсу и политиках ресурса.

Как было сказано ранее, Web-сервисы — это разновидность ресурсов, отличающаяся от обычных Web-ресурсов тем, что Web-сервисы необязательно должны иметь свое представление — данные состояния ресурса, получаемые с помощью запроса HTTP GET.

Поиск описаний Web-сервисов может осуществляться с использованием специальных сервисов, отвечающих за публикацию и поиск описаний согласно определенАрхитектура XML Web-сервисов 17 ным критериям. При статическом поиске описания Web-сервиса его потенциальный потребитель связывается с таким сервисом с помощью соответствующего программного обеспечения, например Web-браузера, и получает необходимое описание Web-сервиса. При динамическом поиске описания Web-сервиса агент потребителя сервиса напрямую обращается к специальному сервису для установки связи с агентом поставщика сервиса.

Передача описания Web-сервиса между поставщиком и потребителем сервиса может осуществляться и без специального сервиса — напрямую или с помощью других источников, таких как файловые системы, Web-сайты и др.

Модель Policy Модель Policy Model описывает политики сервиса, представляющие собой ограничения на допустимые действия или состояния агентов или их собственников.

Политики могут определять ограничения относительно доступа к ресурсам/состояний ресурсов или возможных действий/состояний агентов поставщиков или потребителей сервисов.

Политики могут быть двух типов:

политики разрешений;

политики обязательств.

Политика разрешений позволяет агентам выполнять определенные действия, иметь доступ к определенным ресурсам, достигать определенного состояния.

За выполнением политики разрешений следит механизм защиты разрешений, гарантирующий соответствие использования сервиса — политики, установленной поставщиком сервиса.

Политика обязательств выдвигает требования для агентов исполнять определенные действия или достигать определенных состояний.

За выполнением политики обязательств следит механизм аудита, проверяющий выполнение обязательств, установленных поставщиком сервиса.

Политики могут иметь описание в формате, пригодном для компьютерной обработки. Описание политики определяет ее и используется для решения применения политики к конкретной ситуации.

Архитектура Service Oriented Architecture (SOA) Web-сервисы являются программными компонентами распределенных приложений, имеющих сервис-ориентированную архитектуру SOA.

Распределенные системы могут создаваться с помощью технологии Web-сервисов, реализующей архитектуру SOA, или технологий COM/CORBA. Однако технологии COM/CORBA не обеспечивают в полной мере кроссплатформенность.

Глава 1 Реализация архитектуры SOA с помощью технологии Web-сервисов более приемлема для создания распределенных приложений, компоненты которых взаимодействуют через Интернет, разворачиваются и работают на различных платформах.

В архитектуре SOA распределенные системы состоят из взаимодействующих агентов поставщиков и потребителей сервисов, выполняющих определенные задачи.

Агенты распределенной системы не работают в одной и той же среде выполнения и связываются друг с другом с помощью протоколов через сеть.

В распределенных системах скорость выполнения задач зависит от скорости удаленного доступа к агентам, а надежность — от ошибок коммуникации между агентами.

Архитектура SOA характеризуется следующими свойствами.

Логическое представление. В логическом представлении SOA сервис — это абстрактное, логическое представление реальной программы, базы данных, бизнес-процесса и т. д., определенное в терминах функциональности.

Сообщения. Сервис определяется в терминах сообщений, участвующих в обмене между агентами поставщиков и потребителей сервиса. Архитектура SOA не определяет внутреннюю структуру агентов, их реализацию, тем самым обеспечивая совместимость между любыми программными компонентами, удовлетворяющими требованиям обмена сообщениями в определении сервиса.

Описание. Сервисы описываются метаданными, подлежащими компьютерной обработке. Описания сервисов обеспечивают публичность архитектуры SOA.

Степень детализации. Сервисы используют небольшой набор операций с большим набором сообщений.

Передача по сети. Взаимодействие с сервисами может осуществляться с помощью сетевого соединения.

Кроссплатформенность. Сообщения, участвующие в обмене с сервисами, имеют стандартный кроссплатформенный XML-формат.

При реализации архитектуры SOA необходимо решать проблемы, связанные с ненадежностью транспортных протоколов, параллельным удаленным доступом, совместимостью программных компонентов, возможными ошибками одного или нескольких компонентов системы, обеспечением достаточной памяти для вызова объектов.

Архитектура SOA может быть реализована с помощью трех типов XML Webсервисов:

RESTful Web-сервисы обеспечивают обмен и управление представлениями ресурсов с помощью HTTP-методов GET, PUT, POST и DELETE;

RPC SOAP Web-сервисы обеспечивают определенный набор операций;

XML Web-сервисы обеспечивают получение, обработку и отправку сообщений.

Все три типа Web-сервисов имеют URI-идентификаторы и XML-формат сообщений. При этом RESTful и XML Web-сервисы могут использовать HTTP- или Архитектура XML Web-сервисов 19 SOAP/HTTP-протоколы для обмена сообщениями, а SOAP Web-сервисы могут использовать SOAP-протокол вместе с транспортными протоколами HTTP, SMTP, FTP и др.

Основные технологии архитектуры Web-сервисов XML XML-технология обеспечивает кроссплатформенный и расширяемый стандарт для формата данных.

При обсуждении XML-технологии мы будем опираться на спецификации XML 1.0, XML Information Set, Namespaces in XML 1.0 и XML Schema.

В архитектуре Web-сервисов XML-формат используется как для описания сервисов, так и для обмена сообщениями с Web-сервисами.

eXtensible Markup Language (XML) — это язык разметки документов, обеспечивающий текстовый формат хранения данных. Язык XML является подмножеством языка Standard Generalized Markup Language (SGML) и описывает определенный класс объектов, называемых XML-документами.

XML-формат представляет собой платформонезависимый способ структурирования информации путем представления документа в виде дерева элементов, каждый из которых может иметь набор атрибутов, представляющих пару "имя/значение", и содержать другие элементы и/или текст. При этом каждый элемент дерева может ссылаться на другие элементы с помощью своих атрибутов.

Приложения, работающие с XML-документами, для их обработки используют программный компонент — XML-процессор, обеспечивающий доступ к содержимому и структуре XML-документа. В технологии Java XML-процессоры представлены семейством Java for XML Processing (JAXP), включающим в себя процессоры DOM, SAX, StAX и TrAX.

XML-процессоры подразделяются на две категории — потоковые и объектные обработчики. При потоковой обработке XML-документа XML-процессор анализирует документ последовательно, в реальном времени, что экономит ресурсы памяти.

SAX — это потоковый XML-процессор. При объектной обработке XMLдокумента XML-процессор создает в памяти объекты, представляющие состояние документа, что дает возможность в произвольном порядке анализировать его части.

DOM — это процессор, поддерживающий объектную модель документа.

Процессор StAX является промежуточным между SAX и DOM, обеспечивая управление анализом XML-документа в приложении.

Процессор TrAX дает возможность трансформации XML-документа в другие форматы данных с использованием таблицы стилей XSLT. Существуют также XMLпроцессоры, трансформирующие XML-документы в формат HTML и XHTML с использованием каскадных таблиц стилей CSS.

Глава 1 Модель XML-документа описывает его в терминах логической и физической структуры. Логическая структура состоит из объявления, определения типа документа, элементов, комментариев, ссылок и инструкций по обработке документа.

Каждый XML-документ может начинаться с объявления, ограниченного тегами и включающего в себя атрибуты version (версия XML-спецификации — на сегодняшний день только 1.0), encoding (символьная кодировка документа, по умолчанию Unicode) и standalone (по умолчанию no, означает, что документ может иметь свое внешнее описание).

Далее в XML-документе может находиться описание структуры документа — определение типа документа DTD (Document Type Definition) или ссылка на внешний DTD-файл.

После объявления и определения типа документа его логическая структура представлена набором элементов, комментариев, ссылок и инструкций по обработке документа.

Элементы XML-документа, ограниченные тегами, которые называются разметкой, формируют его иерархическую структуру и могут иметь атрибуты, которые так же, как и элементы, способны хранить данные. XML-документ должен содержать как минимум один корневой элемент.

XML-теги определяют значение, типы данных, а не способ их отображения, как в формате HTML.

Атрибуты элементов представляют собой пары "имя/значение" и могут быть трех типов — строковый тип, лексемы и перечисления.

Дочерний элемент корневого элемента — это такое же его свойство, как и атрибут, за исключением того, что дочерний элемент может иметь свою сложную структуру.

Комментарии ограничиваются тегами и предназначены для документирования XML-документа.

Ссылки ограничиваются амперсандом (&) и точкой с запятой (;) и используются в XML-документах для подстановки при обработке документа вместо них символов или различного рода данных, описанных в определении DTD. Подставляемые данные могут быть обрабатываемыми XML-процессором, т. е. представлены в XMLформате, или необрабатываемыми — текстовые данные не формата XML, изображения и другие двоичные данные. Кроме того, для включения в XML-документ символьных данных, которые не следует обрабатывать XML-процессором, используется секция CDATA, ограниченная тегами ![CDATA[ и ]].

XML-ссылка — это ссылка на внешний объект, сущность, содержимое которого размещается в текущем месте, т. е. ссылка на сущность работает как подстановка и обеспечивает модульность XML-документа, в отличие от HTML-ссылки, являющейся инструкцией приложению для перехода на другой HTML-документ или фрагмент HTML-документа.

Инструкции по обработке ограничиваются тегами и предназначены для передачи информации приложению, работающему с XML-документом.

Архитектура XML Web-сервисов 21 Физическая структура XML-документа описывает его как набор сущностей, которые могут быть обрабатываемыми и необрабатываемыми, внешними и внутренними. XML-документ должен содержать как минимум одну сущность — корневую сущность документа. Сущности могут включаться в XML-документ с помощью ссылок.

XML-документы характеризуются условиями корректности (правильности) и действительности. Правильный XML-документ — это документ, имеющий один корневой элемент, элементы которого не перекрываются, удовлетворяющий другим требованиям спецификации XML. Действительный XML-документ — это документ, имеющий описание своей структуры и соответствующий этому описанию.

Помимо базового XML-синтаксиса, основные понятия XML-технологии, используемые в технологии Web-сервисов, — это XML Infoset, XML Schema и XML Namespaces.

XML Namespaces Для предотвращения конфликта имен в XML-документах используются пространства имен, представляющие собой коллекции имен, в каждой из которых все имена уникальны, при этом каждая такая коллекция имеет свой уникальный идентификатор. Следовательно, каждое XML-имя может характеризоваться идентификатором пространства имен и локальным именем в пределах данного пространства имен.

Идентификатор XML-пространства имен является URI-адресом и используется в определении типа элемента XML-документа (имени начального и конечного тега элемента) и имени атрибута элемента.

Пространство имен объявляется с помощью зарезервированного имени xmlns, после которого может следовать префикс пространства имен, являющийся, по сути, сокращением идентификатора, и далее идет URI-идентификатор пространства имен.

Префикс пространства имен и локальное имя вместе составляют уточненное имя QName элементов и атрибутов XML-документа.

Если пространство имен объявлено без префикса, тогда оно становится пространством имен по умолчанию для всех элементов XML-документа, не уточненных префиксом какого-либо пространства имен. Надо заметить, что это не относится к атрибутам XML-документа, которые для связывания с пространством имен всегда необходимо уточнять соответствующим префиксом. Поэтому корректный XML-документ не должен содержать разные по значению атрибуты с одинаковыми, не уточненными префиксом, локальными именами в пределах одного элемента.

Таким образом, механизм XML Namespaces позволяет присваивать уникальные имена элементам и атрибутам XML-документа, предоставляя каждому элементу и атрибуту свое уточненное QName-имя в пределах глобального XML-пространства имен http://www.w3.org/XML/1998/namespace.

Глава 1 XML Infoset XML-формат делает возможным представление документа в виде иерархической структуры, определяющей его информационное пространство XML Infoset в виде множества информационных единиц, имеющих свойства.

Спецификация XML Information Set (XML Infoset) описывает абстрактную модель данных, представленных XML-документом, в виде набора информационных единиц. Каждая информационная единица является абстрактным описанием определенной части XML-документа и имеет набор связанных с ней свойств.

Необязательно каждый XML-документ должен иметь информационное пространство XML Infoset. Информационное пространство XML Infoset имеют лишь XMLдокументы, отвечающие правилам XML-синтаксиса согласно спецификации XML и соответствующие пространству имен согласно спецификации XML Namespaces.

Таким образом, правильно оформленный XML-документ — это сериализованная форма определенного информационного пространства.

Модель XML Infoset реализуется различными языками программирования в виде объектов, обеспечивающих доступ к частям XML-документа.

Спецификация XML Infoset определяет для XML-документа 11 типов информационных единиц — каждая с соответствующим набором свойств.

Информационное пространство XML-документа содержит как минимум корневую информационную единицу document. Все остальные информационные единицы информационного пространства XML-документа доступны с помощью свойств корневой информационной единицы document или свойств дочерних для document информационных единиц.

Информационная единица document имеет следующие свойства:

[children] — список дочерних для document информационных единиц верхнего уровня, при этом список содержит как минимум одну информационную единицу — document element. Список также содержит информационные единицы processing instruction (инструкция по обработке информационной единицы) и comment (комментарий). Список может содержать информационный элемент document type declaration (DTD-описание или ссылка на DTD-описание структуры XML-документа);

element] — идентификатор информационной единицы document [document element;

[notations] — набор информационных единиц notation (нотации, которые дают возможность передавать приложениям различную информацию, например, способ обработки сущности, не подлежащей разбору);

[unparsed entities] — набор информационных единиц unparsed entity (сущности, не подлежащие разбору);

[base URI] — URI-идентификатор XML-документа;

[character encoding scheme] — символьная кодировка XML-документа;

Архитектура XML Web-сервисов 23 [standalone] — если YES, тогда указывает автономность документа, т. е. возможность обработки XML-документа без привлечения других документов;

[version] — версия XML-документа;

[all declarations processed] — если true, тогда XML-процессор должен полностью обработать DTD-описание структуры XML-документа.

Каждый XML-документ состоит из элементов, ограниченных тегами и представляющих соответствующие информационные единицы element информационного пространства XML Infoset.

Информационные единицы element являются дочерними по отношению к информационной единице document element и имеют следующие свойства:

[namespace name] — URI-идентификатор пространства имен, к которому принадлежит элемент;

[local name] — локальная часть имени элемента, которая вместе со свойством [namespace name] образует имя элемента;

[prefix] — префикс пространства имен элемента;

[children] — список дочерних информационных единиц, содержащий информационные единицы element, а также информационные единицы processing instruction (инструкции для обработки), unexpanded entity reference (ссылка на необработанную внешнюю сущность, подлежащую разбору), character (единица текста — последовательности символов) и comment (комментарии) для данного элемента;

[attributes] — набор информационных единиц attribute, представленный атрибутами элемента XML-документа;

[namespace attributes] — набор информационных единиц attribute, представленный атрибутами элемента, объявляющими используемые элементом пространства имен;

[in-scope namespaces] — набор информационных единиц namespace (пространства имен, используемые элементом);

[base URI] — URI-идентификатор элемента;

[parent] — информационная единица, являющаяся родительской.

Атрибуты элементов в виде пар "имя/значение" XML-документа представляют информационные единицы attribute информационного пространства XML Infoset.

Атрибуты могут быть определены в XML-документе или установлены по умолчанию.

Атрибуты подразделяются на три типа — строковые, лексемы (знаковый тип) и перечисления.

Информационная единица attribute имеет следующие свойства:

[namespace name] — URI-идентификатор пространства имен, к которому принадлежит атрибут;

Глава 1 [local name] — локальная часть имени атрибута, которая вместе со свойством [namespace name] образует имя атрибута;

[prefix] — префикс пространства имен атрибута;

[normalized value] — нормализованное значение атрибута с преобразованием пробелов;

[specified] — флаг, указывающий, что атрибут определен в начальном теге элемента или установлен по умолчанию в DTD-описании;

[attribute type] — тип атрибута, объявленный в описании структуры XMLдокумента. Возможные значения — ID, IDREF, IDREFS (идентификаторы и ссылки на идентификаторы — знаковые типы), ENTITY, ENTITIES (имена сущностей, не подлежащих разбору — знаковые типы), NMTOKEN, NMTOKENS (лексемы имен — знаковые типы), NOTATION (информация, используемая приложением — строковый тип), CDATA (символьная строка — строковый тип) и ENUMERATION (список допустимых значений атрибута — перечисление);

[references] — если тип атрибута равен IDREF, IDREFS, ENTITY, ENTITIES или тогда список информационных единиц element, unparsed entity или NOTATION, если тип атрибута — ID, NMTOKEN, NMTOKENS, CDATA или ENUMERATION, тогда notation;

свойство не имеет значения;

[owner element] — информационная единица element, к которой относится данная единица attribute.

Информационная единица processing instruction, представленная инструкцией обработки элемента в XML-документе, имеет следующие свойства:

[target] — имя приложения, исполняющего инструкцию;

[content] — данные для приложения в виде пар "имя/значение";

[base URI] — URI-идентификатор инструкции;

[notation] — информационная единица notation, определяющая имя приложения, которое исполняет инструкцию;

[parent] — информационная единица, к которой относится данная инструкция.

Информационная единица unexpanded entity reference представлена ссылкой на необработанную XML-процессором внешнюю сущность, подлежащую разбору.

Эта информационная единица имеет следующие свойства:

[name] — имя сущности;

[system identifier] — системный идентификатор сущности в виде URI-адреса сущности;

[public identifier] — публичный идентификатор общедоступной сущности в виде URI-адреса сущности;

[declaration base URI] — базовый URI-адрес, относительно которого разрешается системный идентификатор;

[parent] — информационная единица element, к которой относится данная сущность.

Архитектура XML Web-сервисов 25

Информационная единица character представлена символьными данными XMLдокумента и имеет следующие свойства:

[character code] — символьная кодировка ISO 10646;

[element content whitespace] — если true, тогда символ является пробелом;

[parent] — информационная единица element, к которой относится данная информационная единица character.

Информационная единица comment представлена комментариями XML-документа и имеет следующие свойства:

[content] — строка комментария;

[parent] — информационная единица document или element, к которой относится данный комментарий.

Информационная единица document type declaration представлена ссылкой или самим DTD-описанием структуры XML-документа и имеет следующие свойства:

[system identifier] — системный идентификатор внешнего DTD-описания в виде URI-адреса;

[public identifier] — публичный идентификатор общедоступного внешнего DTD-описания в виде URI-адреса;

[children] — список информационных единиц processing instruction, представленных инструкциями обработки DTD-описания;

[parent] — информационная единица document, к которой относится данное DTD-описание.

Информационная единица unparsed entity представлена сущностью, не подлежащей обработке XML-процессором и объявленной в описании структуры XMLдокумента. Обычно это ресурс в двоичном формате или другом не XML-формате, например GIF, BMP и др.

Информационная единица unparsed entity имеет свойства:

[name] — имя сущности;

[system identifier] — системный идентификатор сущности в виде URI-адреса сущности;

[public identifier] — публичный идентификатор общедоступной сущности в виде URI-адреса сущности;

[declaration base URI] — базовый URI-адрес, относительно которого разрешается системный идентификатор;

[notation name] — имя нотации, определяющей формат сущности, которая не подлежит обработке;

[notation] — информационная единица notation с именем, указанным в свойстве [notation name].

Информационная единица notation представлена нотацией, объявленной в описании структуры XML-документа. Нотации используются для определения формата Глава 1 сущностей (ресурсов), не подлежащих обработке XML-процессором, а также для указания приложений, получающих инструкции по обработке элементов XMLдокумента.

Эта информационная единица имеет следующие свойства:

[name] — имя нотации;

[system identifier] — системный идентификатор нотации в виде URI-адреса;

[public identifier] — публичный идентификатор общедоступной нотации в виде URI-адреса;

[declaration base URI] — базовый URI-адрес, относительно которого разрешается системный идентификатор.

Информационная единица namespace представлена пространством имен элемента

XML-документа и имеет следующие свойства:

[prefix] — часть имени, следующая после xmlns:, если префикс отсутствует, тогда пространство имен является установленным по умолчанию;

[namespace name] — пространство имен, следующее после префикса.

Как уже было сказано, XML-документы предназначены для хранения данных. Но приложение, использующее XML-документ, работает не непосредственно с документом, а с его информационным пространством XML Infoset, получаемым как результат разбора XML-документа XML-процессором. Однако информационное пространство XML Infoset может быть получено и другими способами, например, с использованием библиотек API DOM. В этом случае такое информационное пространство называется синтетическим.

XML-документы могут быть двух типов — документы, созданные с учетом правил, которым они должны подчиняться, и документы, не имеющие никаких правил.

При использовании XML-документа, не имеющего правил, вся ответственность за корректность написания документа лежит на его авторе.

Однако чаще всего XML-документы имеют описание своей структуры — XMLсхему, представляющую собой набор логических и структурных правил. В этом случае проверку документа на соответствие правилам, определенным в описании структуры документа, производит XML-процессор.

XML-процессоры также могут быть двух типов — обработчики, которые обязаны осуществлять проверку XML-документа на соответствие описания его структуры, и обработчики, не осуществляющие такую проверку.

Описание структуры XML-документа, накладывающее ограничения на структуру и содержание документов данного типа, может быть создано с помощью различных языков, таких как Document Type Definition (DTD), XML Schema, RELAX NG и др.

Первым языком для создания XML-схем был язык Document Type Definition (DTD).

Язык DTD является компактным и позволяет включать описание структуры XMLдокумента непосредственно в сам XML-документ. Но синтаксис языка DTD отличается от XML-синтаксиса, поэтому он прямо не поддерживается платформами и инструментами технологии XML. Кроме того, язык DTD не поддерживает пространства имен, а поддержка типов данных ограничена. Язык DTD не позволяет Архитектура XML Web-сервисов 27 определять элементы, содержащие целые и вещественные числа, даты и времена и др., и не может указывать сложные связи между элементами.

Язык XML Schema дает более богатые возможности по сравнению с DTD и устраняет его недостатки. Синтаксис XML Schema является XML-синтаксисом, кроме того, в языке XML Schema обеспечена поддержка пространств имен и всех необходимых типов данных. Также язык XML Schema позволяет создавать собственные типы данных и расширять существующие. Использование языка XML Schema обеспечивает трансформацию XML-документа в иерархию объектов определенных типов, доступных программным способом с помощью интерфейса (функциональность Post-Schema-Validation Infoset (PSVI)).

Язык RELAX NG, как и XML Schema, использует XML-синтаксис и по сравнению с XML Schema является более простым и легким в изучении. Язык RELAX NG сочетает в себе простоту DTD и богатые возможности XML Schema. Однако так как язык RELAX NG является в определенном смысле упрощением XML Schema, то он не поддерживает функциональность PSVI и имеет упрощенную типовую модель, что делает необходимым использование сторонних библиотек типов данных.

Здесь мы более подробно остановимся на языке XML Schema.

XML Schema Язык XML Schema (XML Schema Definition (XSD)) позволяет очертить определенный круг XML-документов путем создания описания их структуры, накладывающим ограничения на данный тип документов и обеспечивающим их правильную интерпретацию. Описание XML-документов содержит определения элементов и атрибутов, которые могут появляться в данном типе документов, а также наследование элементов, включая порядок и количество потомков. Кроме того, язык XML Schema определяет тип содержимого элементов, типы данных элементов и атрибутов и, наконец, значения элементов и атрибутов по умолчанию и их фиксированные значения.

XML-документ ссылается на свое описание — XML-схему, созданную с помощью языка XML Schema, используя атрибуты xsi:schemaLocation и xsi:noNamespaceSchemaLocation, где xsi — префикс пространства имен, указанного в XML-документе с помощью атрибута xmlns:

xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance Атрибут schemaLocation ссылается на XML-схему, имеющую определение пространства имен, а атрибут noNamespaceSchemaLocation — на XML-схему, не указывающую пространство имен для элементов и атрибутов. Атрибуты xsi:schemaLocation и xsi:noNamespaceSchemaLocation ссылаются на XML-схему своими значениями, представленными в виде URI-адреса схемы.

Корневым компонентом XML Schema является элемент schema, имеющий следующие атрибуты.

Необязательный атрибут attributeFormDefault. Значение атрибута "qualified" указывает, что атрибуты XML-документа должны уточняться (квалифицироГлава 1 ваться) префиксом их пространства имен. По умолчанию значение атрибута — "unqualified".

Необязательный атрибут blockDefault устанавливает по умолчанию значение атрибута block для всех элементов схемы.

Возможные значения атрибута:

#all —в XML-документах запрещена замена базового элемента его производными, созданными любым способом;

extension —запрещена замена в XML-документах базового элемента производными элементами, полученными путем расширения базового типа элемента;

restriction —запрещена замена в XML-документах базового элемента производными элементами, полученными путем ограничения базового типа элемента;

substitution — в XML-документах запрещена любая замена базового элемента.

Необязательный атрибут elementFormDefault. Значение атрибута "qualified" указывает, что элементы XML-документа должны уточняться (квалифицироваться) префиксом их пространства имен. По умолчанию значение атрибута — "unqualified".

Необязательный атрибут finalDefault устанавливает по умолчанию значение атрибута final для всех типов данных схемы.

Возможные значения атрибута:

#all — в XML-схеме запрещено создание производных типов любым способом;

extension — в XML-схеме запрещено создание производных типов путем расширения базового типа;

restriction — в XML-схеме запрещено создание производных типов путем ограничения базового типа;

list — в XML-схеме для простых типов запрещено создание производных типов путем создания списков;

union — в XML-схеме для простых типов запрещено создание производных типов путем объединения.

Необязательный атрибут id — идентификатор схемы.

Необязательный атрибут targetNamespace указывает пространство имен для элементов XML-документа, определяемых данной схемой.

Необязательный атрибут version — версия схемы.

Необязательный атрибут xml:lang определяет по умолчанию язык для всех комментариев схемы.

Элемент schema имеет также атрибут xmlns:xsd="http://www.w3.org/2001/ XMLSchema", указывающий пространство имен для элементов и типов данных самой Архитектура XML Web-сервисов 29 схемы. При наличии префикса для данного пространства имен все элементы и типы данных схемы, включая элемент schema, должны уточняться этим префиксом (xsd:schema). Если префикс отсутствует, тогда атрибут xmlns указывает для схемы пространство имен по умолчанию. Данное пространство имен используется, чтобы очертить круг элементов и простых типов, относящихся к словарю языка XML Schema, а не к словарю автора схемы.

Элемент schema (рис. 1.1) может содержать вложенные элементы include, import, redefine, annotation, type (simpleType, complexType), group, attributeGroup, element, attribute, notation, identityConstraint (key, unique, keyref).

Рис. 1.1. Общая схема элемента schema

Язык XML Schema позволяет создавать описание структуры XML-документов, состоящее из нескольких схем, с помощью элементов include и import.

Элемент include добавляет все компоненты указанной схемы в основную схему, а элемент import дает возможность использовать компоненты указанной схемы в основной схеме.

Разница между элементами include и import состоит в том, что при использовании элемента include целевое пространство имен включаемой схемы (атрибут




Похожие работы:

«Т 0 М С К 1 Я л ж л т т от ж а в ь д о ш о а н ш. Л 50-й. Пятница, Декабря 16 дня, 1860 года. Часть Неоффнвдальаая.С о Д Е Р Ж А I I 1 Е: / 1. О произшествЬяхъ вь Т о м с к о й губернш, 2. Библиограф ическое извлсппе.3. М е т е о р о л о ги ч е с к а я н а б л ю д е т я. —."аиаея?-"нос...»

«РАСПИСАНИЕ БОГОСЛУЖЕНИЙ В ХРАМЕ ВСЕМИЛОСТИВОГО СПАСА (ул. Бисертская, 12а) на время Пятидесятницы Апрель 2017 года Антипасха. Неделя 2-я по Пасхе, апостола Фомы. Воскресенье 8.30 Часы. Литургия. Молебен. 16.00 Великая вечерня. 10/23 Молебе...»

«Іі.Г ГИ1 ГМЛРУІ?) і : л и ж /і? Р і'У І ь КІИ ІІТН4‘) іы.‘ин л л іили гэіиюи эоипкн кои п I1XIІІ I/ ІЛ амО Л \\\ ъщшт^и іиіііУ ’ ніа**^ Л" /\Х/\Х\Ххх/-— -чч ;Цна годовому изданію съ пере­ Выходятъ два раза въ мсяцъ № 2 0. сылкою и дос...»

«Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования "РОССИЙСКАЯ АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА И ГОСУДАРСТВЕННОЙ СЛУЖБЫ ПРИ ПРЕЗИДЕНТЕ РОССИЙСКОЙ ФЕДЕРАЦИИ" Киюцевская А.М., Моргунов В.И., Трунин П.В. Особенности курсовой политики в рамках р...»

«© 2000 г. В.В. ПЕТУХОВ ПОЛИТИЧЕСКИЕ ЦЕННОСТИ И ПОВЕДЕНИЕ СРЕДНЕГО КЛАССА ПЕТУХОВ Владимир Васильевич кандидат философских наук, директор Центра социально-политического анализа РНИСиНП. Отношение к актуальным вопросам общественно-политического развития Результаты названного...»

«МИР РОССИИ • 2000 • N2 РОССИЯ КАК РЕАЛЬНОСТЬ На пути к обществу рабочего класса российская классовая структура в 90-е годы* X. МЕЛИН Финский социолог X. Мелин анализирует современное российское...»

«Все в "Убежище" Объяснительная записка Дмитрия Глуховского Ровно два года назад мы дали старт "Вселенной". Сейчас вы держите в руках двадцать первую книгу нашей серии. Если собрать их все вместе и вы ставить на полку по порядку, из букв на корешках сложатся сло...»

«Максим Горький Поль Верлен и декаденты "Public Domain" Горький М. А. Поль Верлен и декаденты / М. А. Горький — "Public Domain", 1896 "В декабре прошлого года в Париже умер Поль Верлен, поэтдекадент и основатель этой болезненно извращённой литературной школы. У могилы этого человека, до дня...»

«Наукові записки, вип.14, 2013 Список літератури 1. Податковий Кодекс України. № 2755-17, в редакції від 19.01.2012.2. Довгань О.В. Переваги та недоліки податку на додану вартість // Вісник Київського інститут...»

«Анна Федорова Кристина Потупчик Власть над Сетью. Как государство действует в Интернете Текст предоставлен издательством http://www.litres.ru/pages/biblio_book/?art=8717302 Кристина Потупчик, Анна Федорова. Власть над Сетью. Как государство действует в Интернете: Ал...»

«ОБЪЯВЛЕНИЕ ОБ ЭЛЕКТРОННЫХ ЗАКУПКАХ СПОСОБОМ ЗАПРОС ЦЕНОВЫХ ПРЕДЛОЖЕНИЙ N:187313 1. в лице "Восточные МЭС" (наименование заказчика) объявляет о проведении электронных закупок способом запроса ценовых предложений Запчасти к оборудованию (наименование закупки) 2. Перечень лотов № Наименование Краткая Дополнительная Кол-во Ед...»








 
2017 www.book.lib-i.ru - «Бесплатная электронная библиотека - электронные ресурсы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.