Хотя пространства имен помогают организовывать схемы и предотвращать конфликты,
это не пространство имен выше, что позволяет для повторного использования,
это размещение типа как непосредственного потомка корня
это делает его глобальным типом. (Используется в пространстве имен без квалификатора пространства имен и в любом месте, где пространство имен tns видимо с квалификатором tns:.)
Я предпочитаю конструировать свои схемы, следуя подходу «Эдемского сада», который максимизирует повторное использование как элементов, так и типов (а также может облегчить внешнюю логическую ссылку на тщательно созданный уникальный тип / элемент, например, из словаря данных в базе данных.
Обратите внимание, что, хотя шаблон схемы «Райский сад» предлагает максимальное повторное использование, он также включает в себя большую часть работы. В нижней части этого поста я привел ссылки на другие шаблоны, описанные в серии блогов.
& бык; Подход Эдемского сада http://blogs.msdn.com/skaufman/archive/2005/05/10/416269.aspx
Использует модульный подход, определяя все элементы глобально, и подобно подходу Венецианской слепоты все определения типов объявляются глобально. Каждый элемент глобально определен как непосредственный дочерний элемент узла, а его атрибут типа может быть установлен на один из названных сложных типов.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="TargetNamespace" xmlns:TN="TargetNamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="BookInformation" type="BookInformationType"/>
<xs:complexType name="BookInformationType">
<xs:sequence>
<xs:element ref="Title"/>
<xs:element ref="ISBN"/>
<xs:element ref="Publisher"/>
<xs:element ref="PeopleInvolved" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="PeopleInvolvedType">
<xs:sequence>
<xs:element name="Author"/>
</xs:sequence>
</xs:complexType>
<xs:element name="Title"/>
<xs:element name="ISBN"/>
<xs:element name="Publisher"/>
<xs:element name="PeopleInvolved" type="PeopleInvolvedType"/>
</xs:schema>
Преимущество этого подхода заключается в том, что схемы можно использовать повторно. Поскольку элементы и типы определены глобально, оба доступны для повторного использования. Этот подход предлагает максимальное количество повторно используемого контента.
Недостатками являются то, что схема является многословной.
Это было бы уместно при создании общих библиотек, в которых вы можете не делать никаких предположений относительно области применения элементов и типов схемы и их использования в других схемах, особенно в отношении расширяемости и модульности.
Поскольку каждый отдельный тип и элемент имеют одно глобальное определение, эти канонические частицы / компоненты могут быть связаны один к одному с идентификаторами в базе данных. И хотя на первый взгляд может показаться утомительной текущей ручной задачей по поддержанию связей между текстовыми частицами / компонентами XSD и базой данных, SQL Server 2005 может фактически генерировать идентификаторы компонентов канонической схемы с помощью оператора
CREATE XML SCHEMA COLLECTION
http://technet.microsoft.com/en-us/library/ms179457.aspx
И наоборот, для построения схемы из канонических частиц SQL Server 2005 предоставляет
SELECT xml_schema_namespace function
http://technet.microsoft.com/en-us/library/ms191170.aspx
са · не · я · кал
Связанные с математикой. (уравнения, координаты и т. д.)
«в простейшей или стандартной форме»
http://dictionary.reference.com/browse/canonical
Другие, более простые в построении, но менее изменяемые / более «денормализованные / избыточные» шаблоны схем включают
* 1 034 * & бык;
Подход "Русская кукла" http://blogs.msdn.com/skaufman/archive/2005/04/21/410486.aspx
Схема имеет один единственный глобальный элемент - корневой элемент. Все остальные элементы и типы постепенно встраиваются все глубже, давая ему имя, потому что каждый тип вписывается в один над ним. Так как элементы в этом дизайне объявлены локально, они не будут повторно использоваться через импорт или включать операторы.
* * 1 042 & бык;
Подход с ломтиками салями http://blogs.msdn.com/skaufman/archive/2005/04/25/411809.aspx
Все элементы определены глобально, но определения типов определены локально. Таким образом, другие схемы могут повторно использовать элементы. При таком подходе глобальный элемент с локально определенным типом предоставляет полное описание содержимого элементов. Этот информационный «фрагмент» объявляется индивидуально, а затем объединяется обратно и может также объединяться для создания других схем.
& бык; Подход Венецианского Слепого http://blogs.msdn.com/skaufman/archive/2005/04/29/413491.aspx
СимИлар к подходу «Русская кукла» в том, что они оба используют один глобальный элемент. Подход Venetian Blind описывает модульный подход, называя и определяя все определения типов глобально (в отличие от подхода Slice Salami, который объявляет элементы глобально и типы локально). Каждый глобально определенный тип описывает отдельную «планку» и может использоваться другими компонентами. Кроме того, все локально объявленные элементы могут быть квалифицированными для пространства имен или неквалифицированными для пространства имен (планки могут быть «открыты» или «закрыты») в зависимости от значения атрибута elementFormDefault в верхней части схемы.