XML - статьи



              

Визуальное редактирование схемы


Если вы установили Модель XSD Schema Infoset и дополнения к Оболочке моделирования Eclipse (EMF) в Eclipse, вы можете узнать, как работает этот редактор в инструментальном средстве. (Примечание: данная статья не подразумевает обязательного изучения этого редактора). Просто щелкните правой кнопкой мышки по файлу schema.xsd в меню Navigator и выберите Open With... а затем Sample XML Schema Editor. Вы откроете стандартный редактор Eclipse, который показывает обычное окно Source - это конкретное DOM-представление xsd-файла, который вы открыли.

В нижней части редактора находятся еще две закладки: Semantics и Syntax. Это графические представления, демонстрирующие различные абстрактные отношения Infoset между компонентами схемы. Например, в окне Semantics можно увидеть высокоуровневый элемент для Types - это все типы (простые и сложные), объявленные где угодно в самой схеме, а не только на верхнем уровне и не просто в этом документе (эта функциональность становится более очевидной, если открытый вами документ схемы использует элементы include и import).

В рамках рассматриваемого примера немного упростим изучаемую проблему. MakeSoapCompatible.java - это программа, которая попытается взять большинство attributeDeclarations и превратить их в приблизительные эквиваленты attributeDeclaration, выдав несколько предупреждений.

В первую очередь отметим, что невозможно преобразовать атрибут в элемент, если уже существует элемент с таким именем в единицах (particle) complexType. Следовательно, сначала установим случаи конфликта имен и не станем эти атрибуты. Чтобы упростить пример, объявим некоторые произвольные условия, чтобы схема была несовместима с этой программой. Не будем изменять схемы, которые содержат групповые символы, поскольку в этом случае потребовалось бы выполнять сложную проверку имен, чтобы убедиться, что ни один из измененных атрибутов не конфликтует с элементами. Также не будем модифицировать группы, которые в качестве компоновщика используют #all или #choice, так как это непредсказуемым способом могло бы изменить значение группы.




Содержание  Назад  Вперед