XML позволяет также осуществлять контроль за корректностью данных, хранящихся в документах, производить проверки иерархических соотношений внутри документа и устанавливать единый стандарт на структуру документов, содержимым которых могут быть самые различные данные. Это означает, что его можно использовать при построении сложных информационных систем, в которых очень важным является вопрос обмена информацией между различными приложениями, работающими в одной системе. Создавая структуру механизма обмена информации в самом начале работы над проектом, менеджер может избавить себя в будущем от многих проблем, связанных с несовместимостью используемых различными компонентами системы форматов данных.
Тело документа XML состоит из элементов разметки (markup) и непосредственно содержимого документа - данных (content). XML - тэги предназначены для определения элементов документа, их атрибутов и других конструкций языка.
В XML-документах DTD определяет набор действительных элементов, идентифицирует элементы, которые могут находиться в других элементах, и определяет действительные атрибуты для каждого из них. Синтаксис DTD весьма своеобразен и от автора-разработчика требуются дополнительные усилия при создании таких документов (сложность DTD является одной из причин того, что использование SGML, требующего определение DTD для любого документа, не получило столь широкого распространения как, например, HTML). Как уже отмечалось, в XML использовать DTD не обязательно - документы, созданные без этих правил, будут правильно обрабатываться программой-анализатором, если они удовлетворяют основным требованиям синтаксиса XML. Однако контроль за типами элементов и корректностью отношений между ними в этом случае будет полностью возлагаться на автора документа. До тех пор, пока грамматика XML-документа не описана, с ним не могут работать универсальные программы-анализаторы.
В DTD для XML используются следующие типы правил: правила для элементов и их атрибутов, описания категорий(макроопределений), описание форматов бинарных данных. Все они описывают основные конструкции языка - элементы, атрибуты, символьные константы внешние файлы бинарных данных.
Для того, чтобы использовать DTD в документе, необходимо или описать его во внешнем файле и при описании DTD просто указать ссылку на этот файл или же непосредственно внутри самого документа выделить область, в которой определить нужные правила. В первом случае в документе указывается имя файла, содержащего DTD- описания:
<?xml version="1.0" standalone="yes" ?>
<! DOCTYPE journal SYSTEM "journal.dtd">
...
Внутри же документа DTD- декларации включаются следующим образом:
...
<! DOCTYPE journal [
<!ELEMENT journal (contacts, issues, authors)>
...
]>
...
В том случае, если используются одновременно внутренние и внешние описания, то программой-анализатором будут сначала рассматриваться внутренние, т.е. их приоритет выше. При проверке документа XML- процессор в первую очередь ищет DTD внутри документа. Если правила внутри документа не определены и не задан атрибут standalone ="yes" , то программа загрузит указанный внешний файл и правила, находящиеся в нем, будут считаны оттуда. Если же атрибут standalone имеет значение "yes", то использование внешних DTD описаний будет запрещено.
Элемент в DTD определяется с помощью дескриптора !ELEMENT, в котором указывается название элемента и структура его содержимого.
Ключевое слово ELEMENT указывает, что данной инструкцией будет описываться элемент XML. Внутри этой инструкции задается название элемента и тип его содержимого.
В определении элемента мы указываем сначала название элемента, а затем его модель содержимого - определяем, какие другие элементы или типы данных могут встречаться внутри него. Последовательность дочерних для текущего элемента объектов задается в виде списка разделенных запятыми названий элементов. При этом для того, чтобы указать количество повторений включений этих элементов могут использоваться символы +,*, ? :
Списки атрибутов элемента определяются с помощью ключевого слова !ATTLIST. Внутри него задаются названия атрибутов, типы их значений и дополнительные параметры.
Всего существует шесть возможных типов значений атрибута:
· CDATA - содержимым документа могут быть любые символьные данные;
· ID - определяет уникальный идентификатор элемента в документе;
· IDREF( IDREFS )- указывает, что значением атрибута должно выступать название(или несколько таких названий, разделенных пробелами во втором случае) уникального идентификатора определенного в этом документе элемента;
· ENTITY (ENTITIES) - значение атрибута должно быть названием (или списком названий, если используется ENTITIES) компонента (макроопределения), определенного в документе;
· NMTOKEN (NMTOKENS) - содержимым элемента может быть только одно отдельное слово (т.е. этот параметр является ограниченным вариантом CDATA);
Список допустимых значений - определяется список значений, которые может иметь данный атрибут.
Также в определении атрибута можно использовать следующие параметры:
· #REQUIRED - определяет обязательный атрибут, который должен быть задан во всех элементах данного типа;
· #IMPLIED - атрибут не является обязательным;
· #FIXED "значение" - указывает, что атрибут должен иметь только указанное значение, однако само определение атрибута не является обязательным, но в процессе разбора его значение в любом случае будет передано программе-анализатору;
· Значение - задает значение атрибута по умолчанию;
Web-службы зависят от способности участников взаимодействовать друг с другом даже при использовании ими различных информационных систем. XML (Extensible Markup Language), язык разметки, делающий данные переносимыми, является ключевой технологией, предназначенной для обеспечения такой способности. Корпоративные пользователи увидели преимущества использования XML для интеграции данных как для совместного использования существующих данных между подразделениями, так и для использования их совместно с другими предприятиями. В результате XML все больше используется в корпоративных интегрированных приложениях, как в сильносвязанных, так и в слабосвязанных системах. Из-за такой способности к интеграции данных XML стал фундаментом Web-вычислений. Web-службы зависят также от способности предприятий использовать различные вычислительные платформы для взаимодействия друг с другом. Это требование делает платформу Java™, программы в которой являются переносимыми, естественным выбором для разработки Web-служб. Этот выбор стал еще более привлекательным после появления
новых Java API для XML, что сделало более легким использование XML в языке программирования Java. Кроме переносимости кода и данных Web-службы должны быть масштабируемыми, безопасными и эффективными. Java™ 2 Platform, Enterprise Edition (J2EE™), специально разработана для удовлетворения этих потребностей. Она облегчает в действительности трудную часть разработки Web-служб, а именно программирование инфраструктуры. Эта инфраструктура включает в себя такие функции как безопасность, управление распределенными транзакциями и управление пулом соединений, которые имеют важнейшее значение для производительности Web-служб. А поскольку компоненты являются повторно используемыми, время разработки существенно уменьшается. Поскольку XML и платформа Java хорошо работают вместе, они стали играть центральную роль в Web-службах. Фактически, преимущества, предлагаемые Java API для XML и платформой J2EE, делают их идеальной комбинацией для размещения Web-служб. Эти API дают возможность сообществу Java, разработчикам и поставщикам сервисных программ и контейнеров начать разработку приложений Web-служб и использование стандартных Java API, составляющих основу принципа технологии Java - Write Once, Run Anywhere™ (пишется один раз, используется везде). Java Web Services Developer Pack (Java WSDP) собирает все эти API в один пакет. Примеры в Java WSDP должны запускаться в контейнере Tomcat (входящим в пакет Java WSDP).
Java API for XML Processing (JAXP) предназначен для обработки XML-данных в приложениях, написанных на языке программирования Java. JAXP использует стандарты анализаторов SAX (Simple API for XML Parsing) и DOM (Document Object Model), так что вы можете выбирать между анализом данных как потока событий или построением их объектного представления. JAXP поддерживает также стандарт XSLT (XML Stylesheet Language Transformations), предоставляющий вам контроль над представлением данных и позволяющий преобразование данных в другие XML-документы или в другие форматы, такие как HTML. JAXP обеспечивает также поддержку пространства имен, позволяя вам работать с DTD, которые могли бы в противном случае вызвать конфликт имен.
JAXP позволяет вам использовать любой XML-совместимый анализатор в вашем приложении. Это обеспечивается при помощи так называемого уровня подключений, который разрешает подключать реализации SAX или DOM API. Уровень подключений позволяет также подключить XSL-процессор, дающий вам контроль над способом отображения ваших XML-данных.
"Simple API" for XML (SAX) представляет собой основанный на событиях механизм последовательного доступа, осуществляющий обработку "элемент-за-элементом". API этого уровня читает и записывает XML в хранилище данных или Web. Для серверных и высокопроизводительных приложений вы должны полностью понимать этот уровень. Но для многих приложений достаточно минимальных знаний.
DOM API обычно легче в использовании. Он обеспечивает относительно знакомую древовидную структуру объектов. Вы можете использовать DOM API для управления иерархией объектов приложения, которые он объединяет. DOM API является идеальным для интерактивных приложений, поскольку в памяти присутствует полная модель объектов, к ней можно получить доступ и пользователь может управлять ею.