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

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

Основные сведения об XML

Расширяемый язык разметки (XML), унаследовавший многое от SGML (Standard Generalized Markup Language — стандартный обобщенный язык разметки), разрабатывался как язык для определения новых форматов документов во Всемирной паутине. XML может считаться метаязыком, так как он используется для построения других языков. Сегодня он обеспечивает основу для многих языков, специфичных для конкретных областей, таких как MathML (Mathematical Markup Language — математический язык разметки), VXML (Voice Markup Language — голосовой язык разметки) или OpenOffice и LibreOffice (OpenDocument).

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

XML-документ

В листинге 12.1 показан XML-документ, представляющий заказ клиента в приложении CD-BookStore (см. главу 1). Следует отметить, что этот документ легко читаем, а также структурирован и, следовательно, может распознаваться внешней системой. В этом случае он описывает информацию о заказе, клиенте, купленных товарах и кредитной карте, использованной для оплаты.


Листинг 12.1. XML-документ, представляющий собой заказ

>

>

>··

>····[email protected]

>····+44 1234 1234

>

>

>····

>······23.5

>····

>····

>······34.99

>····

>··

>··

>

Документ начинается с необязательного объявления XML (с указанием, какая версия XML и кодировка символов используются в документе), далее идет разметка и содержимое. Разметка, также называемая тегами, описывает структуру документа, что позволяет легко отправлять и получать данные или преобразовывать их из одного формата в другой.

Как вы можете видеть в табл. 12.1, терминология XML несложная. Несмотря на эту простоту и читаемость, XML можно использовать для описания любого вида документов, структур данных или дескрипторов развертывания, когда дело доходит до Java ЕЕ.


Таблица 12.1. Терминология XML
ТерминОпределение
Символ UnicodeXML-документ — это символьная строка, которая может состоять из практически всех доступных символов Unicode
Разметка и содержимоеСимволы Unicode подразделяются на разметку и содержимое. Разметка начинается с символов < и > (например, ), а все, что не является разметкой, считается содержимым (например, [email protected])
ТегТеги могут быть трех видов — открывающий (), закрывающий () и пустой (email/)
ЭлементЭлемент начинается с открывающего тега и заканчивается соответствующим закрывающим (или состоит только из пустого тега). Он также может содержать прочие элементы, которые будут называться потомками. Пример элемента: <email>[email protected]
АтрибутАтрибут представляет собой пару «имя/значение», которая располагается в открывающем или закрывающем теге. В следующем примере item — это атрибут тега order_line:
Объявление XMLXML-документы могут начинаться с объявления информации о них, что показано в следующем примере:

Проверка схемы XML

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


Примечание

Первый и самый ранний механизм определения языка — это определение типа документа (DTD). Хотя он используется в некоторых старых фреймворках, механизм DTD был заменен на XSD в связи с многочисленными ограничениями DTD. Одним из основных ограничений является тот факт, что DTD не представляет собой корректный XML-документ, поэтому он не может обрабатываться XML-анализаторами как обычный XML. DTD также не может полноценно ограничивать структуру и содержимое XML-документов.


Определение схемы XML (XSD) представляет собой основанное на XML определение грамматики, которое используется для описания структуры и содержимого XML-документа. Например, схема в листинге 12.2 может использоваться для XML-документа, представленного выше (см. листинг 12.1), придавая ему дополнительный смысл: «Это не просто текстовый файл, это структурированный документ, представляющий заказ, содержащий товары и информацию о клиенте». Во время обмена документами XSD описывает соглашение между производителем и потребителем, потому что описывает корректное 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 так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.