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