Изучаем Java EE 7 - [184]

Шрифт
Интервал


Листинг 12.2. XSD, описывающее XML-документ, который содержит информацию о заказе

>

>

>··


>··

>····

>····

>····

>····

>····

>··


>··

>····

>······

>······

>····

>····

>····

>··


>··

>····

>······

>······

>········

>··········

>············

>························maxOccurs= "unbounded"/>

>··········

>········

>······

>······

>····

>····

>····

>··


>··

>····

>······

>····

>····

>····

>··

>

Как видите, XSD позволяет очень точно определить как простые (), так и сложные типы данных () и даже позволяет типам наследовать свойства других типов. Схема заказа состоит из различных дочерних элементов, наиболее значимых элементов, сложных типов и атрибутов, которые определяют внешний вид содержимого. Благодаря XSD элементы и атрибуты становятся строго типизированными и имеют информацию о типе данных, связанную с ними. Данный строго типизированный XML теперь можно преобразовать в объект с использованием таких технологий, как JAXB, о которой вы узнаете далее в этой главе.

В табл. 12.2 перечислено только подмножество XSD-элементов и атрибутов. Язык XSD гораздо богаче, но эта книга не является энциклопедией по нему. Если вы хотите узнать больше о XSD, его структуре и типах данных, посетите сайт, связанный с W3C.


Таблица 12.2. Элементы и атрибуты XSD
ЭлементОписание
schemaКорневой элемент любой схемы XML. Может содержать несколько атрибутов, например версию схемы
xmlnsКаждый элемент схемы имеет стандартный префикс xs: (или xsd:, может быть использован любой префикс), который связан с пространством имен схемы XML (xmlns) путем объявления: xmlns: xsd="http://www.w3.org/2001/XMLSchema"
elementЭлементы объявляются с помощью элемента element. Например, order — это элемент, который в документе выглядит как
typeЭлемент может иметь простой тип, например string, decimal, long или double (type="xs: long") или сложный (type="customer")
minOccurs, maxOccursОпределяет минимальное или максимальное количество появлений типа. Может быть положительным целым числом или иметь значение unbounded, которое говорит о том, что верхней границы нет
complexTypeОпределяет комплексный тип, имеющий собственные элементы, подэлементы и атрибуты. Элемент типа complexType может содержать другие элементы типа complexType. Например, комплексный тип order содержит другой комплексный элемент
SequenceЭлемент может содержать другие элементы, которые называются элементами-потомками. Элемент такого типа указывает, что элементы-потомки должны следовать в цепочке. Каждый потомок может встречаться от 0 до неограниченного количества раз
attributeКомплексный тип может иметь один или несколько атрибутов, которые определены с помощью элементов типа attribute. Тип orderLine имеет два атрибута: item и quantity
choiceИспользуется для указания, что может присутствовать только один набор элементов
complexContentКомплексный тип может расширять или ограничивать другой комплексный тип с помощью элемента типа complexContent
extensionЭлемент такого типа расширяет существующий элемент типа simpleType или complexType

Если у вас есть XML-документ и связанное с ним определение схемы XML, вы можете использовать анализатор, чтобы он проверил документ за вас. Анализаторы могут быть одного из двух основных типов: DOM и SAX.

Анализ с помощью SAX и DOM

Перед тем как документ может быть использован, он должен быть проанализирован и проверен анализатором XML. Анализатор, также называемый процессором, выполняет анализ разметки и делает данные, содержащиеся в XML, доступными для нуждающихся в них приложений. Большинство XML-анализаторов можно использовать в двух различных режимах. Один режим — это объектная модель документа (DOM), который считывает весь источник данных XML и строит в памяти его древовидное представление. Другой режим — модель на основе событий под названием «простой API для XML» (SAX), который считывает источник данных XML и выполняет функции обратного вызова приложения всякий раз, когда он сталкивается с определенным разделом (концом элемента).


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

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


Симуляция частичной специализации

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


Обработка событий в С++

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


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.