Другой стиль, применяемый при условии уникальности названия всех элементов в пределах пространства имен, заключается в создании схем только с глобальными элементами. Это подобно эффекту использованию <!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".