3.3 Глобальные объявления вместо локальных

Другой стиль, применяемый при условии, что все названия элементов уникальны в пределах пространства имен, заключается в создании схем, в которых все элементы будут глобальными. Это подобно эффекту использованию <!ELEMENT> в DTD. Ниже, в примере, мы изменили оригинал po1.xsd таким образом, что все элементы объявлены глобально. Обратите внимание, в этом примере мы опустили атрибуты elementFormDefault и attributeFormDefault, чтобы подчеркнуть, что их значения являются ненужными, когда объявляются только глобальные элементы и атрибуты.

Измененная версия po1.xsd, использующая только объявления глобальных элементов

<schema xmlns=”http://www.w3.org/2001/XMLSchema” xmlns:po=”http://www.example.com/PO1” targetNamespace=”http://www.example.com/PO1”> <element name=”purchaseOrder” type=”po:PurchaseOrderType”/> <element name=”shipTo” type=”po:USAddress”/> <element name=”billTo” type=”po:USAddress”/> <element name=”comment” type=”string”/> <element name=”name” type=”string”/> <element name=”street” type=”string”/> <complexType name=”PurchaseOrderType”> <sequence> <element ref=”po:shipTo”/> <element ref=”po:billTo”/> <element ref=”po:comment” minOccurs=”0”/> <!-- etc. --> </sequence> </complexType> <complexType name=”USAddress”> <sequence> <element ref=”po:name”/> <element ref=”po:street”/> <!-- etc. --> </sequence> </complexType> <!-- etc --> </schema>

Данная «глобальная» версия po1.xsd проверит правильность примера документа po2.xml, которая, как мы писали ранее, является также правильной схемой и может применяться вместо «квалифицированной» версии po1.xsd.  Другими словами, оба подхода, применяемые в схемах, могут быть использованы для проверки правильности одного и того же документа с одним и тем же пространством имен по умолчанию. Таким образом, в одном отношении эти два подхода схемы подобны, хотя в другом важном отношении они различны. Когда все элементы объявлены глобально, нет возможности использовать преимущества локальных имен. В схеме Вы можете объявить только один глобальный элемент с именем "title". Однако можно локально объявить один элемент с именем "title", который имеет строковый тип, и является подэлементом "book". В той же самой схеме (целевом пространстве имен) можно объявить и второй элемент с именем "title", который является перечислением значений "Mr Mrs Ms".

 

Используются технологии uCoz