Описанные в этой главе инструменты определения словарей XML — базовые правила оформления документов и DTD —содержатся в рекомендации W3C XML 1.0. Они являются основой XML и определяют основные возможности этого языка, позволяющие разработчикам приложений создавать языки разметки, описывая ими домены интересующих их проблем. Но часто, осваивая эти технологии, особенно в области реальных приложений, мы испытываем потребность в дополнительной функциональности.
Перед тем как углубиться в эту главу, давайте рассмотрим некоторые недостатки доступных нам инструментов. После их краткого описания, разберем различные способы решения приведенных проблем. Некоторые из них вам уже знакомы, идентификация остальных поможет сэкономить время, затрачиваемое на поиски решения в сложных ситуациях.
Ранее мы описали некоторые недостатки определений DTD. В основном, они были связаны с тем, что синтаксис этих определений отличается от синтаксиса XML (конкретно, используется так называемая расширенная форма Бэкуса-Наура, Extended Backus Naur Form), и с тем, что эти определения выразительны не в достаточной степени. Итак, сначала мы еще раз исследуем эти недостатки и рассмотрим способы их устранения. Это прольет свет и на другие проблемы, связанные с определением вашей собственной разметки.
Еще одна проблема, которая может быть поводом для беспокойства, — это то, что каждый пользователь может создавать свои собственные теги. Легко представить себе, что для обозначения различных вещей люди будут пользоваться одними и теми же именами элементов. Например, такой элемент, как monitor может иметь несколько значений, в зависимости от обстоятельств. Если вы пишете DTD для компьютерной периферии, то это понятие может означать экран, а в студии звукозаписи так часто называют микрофоны. В DTD для школы монитором можно назвать студента со специальными обязанностями, а на ядерной силовой станции мониторы будут сообщать о сбоях в работе. Даже если значения элементов одинаковы, их возможное содержание может изменяться в зависимости от определения. Таким образом, нам необходим способ, позволяющий определять конкретные виды использования элемента, особенно, если в одном документе мы смешиваем различные виды словарей. Для решения проблемы консорциум W3C выпустил спецификацию, называемую XML Namespaces (пространством имен XML), позволяющую определить контекст элемента в пространстве имен.
Более того, существуют ситуации, когда нам необходимо скомбинировать документы XML из разных источников, соответствующих различным определениям DTD. Например, такая ситуация возникает при описании большого объема информации, если отдельных DTD недостаточно для охвата всего объема или они трудны для понимания. Возникает она и в системах электронной коммерции при попытках объединить данные вашего делового партнера с вашими. К сожалению, рекомендация XML не предоставляет способа совмещения нескольким DTD в одном документе без их модификации или создания нового DTD (используя внешние ссылки). По мере создания новых промышленных стандартных определений DTD увеличивается вероятность того, что кто-либо уже разработал DTD, относящееся к домену проблемы, решением которой вы занимаетесь. Если существующее DTD вам не подходит, то вместо того, чтобы создавать полностью новую версию, добавьте свои настройки к существующей, что позволит вам все-таки обмениваться некоторой информацией в стандартном формате. Однако, как мы уже показали, DTD не позволяет легко осуществить данную операцию.
Такие проблемы особенно заслуживают внимания, учитывая перспективы, открываемые языком XML в мире электронной коммерции, где различные пользователи и компании хотят использовать для обмена информацией знакомые друг другу форматы. Но "совместить" документы, прочитав DTD из кода, - непростая задача. Таким образом, нам необходимы способы поиска различий и сходств в конкурирующих словарях, которые помогут установить связь между ними.
Трудности при создании документа XML из нескольких источнике; каждый из которых записан в соответствии с различными определениями DTD или различными схемами, использующими одни и те же имена элементов, связаны со словарями данных — их построением и правилами.
В данной главе вы познакомитесь с двумя инструментами — пространствами имен и схемами XML. Пространства имен позволяют разработчикам XML разбивать сложную проблему на небольшие фрагменты и объединять несколько словарей в одном документе для полного ее описания. С помощью схем проектировщики словарей создают более точные определения, чем это было возможно в DTD, причем делают это, используя синтаксис XML.
Эти два инструмента помогают решать сложные задачи, возникающие при использовании XML. Пространства имен и схемы позволяют проектировщикам и программистам XML:
• Лучше организовывать словари для решения сложных проблем
• Сохранять сильную типизацию данных при преобразованиях в XML и из него
• Более точно и гибко описывать словари, чем это было возможно в случае DTD
• "Читать" правила словаря на языке XML, осуществляя доступ к его определениям без усложнения анализатора
Достарыңызбен бөлісу: |