Ответ 1
В основном он ссылается на другой элемент, который рассматривается в другом месте, который может быть или не быть одним и тем же документом схемы. Например, это может быть связано с внешней ссылкой на схему в другом пространстве имен. Предположим, вы много используете элемент элемента в нескольких разных схемах, вы можете объявить его (и любые другие распространенные типы и атрибуты) в общей схеме, а затем повторно использовать их во всех своих других схемах. Если вы ссылаетесь на общую схему с пространством имен c, вы можете объявить экземпляр элемента elemnt самостоятельно или как часть типа следующим образом:
<xs:element ref="c:item" /><!-- reference here -->
<xs:complexType name="something">
<xs:sequence>
<xs:element ref="c:item" /><!-- and here -->
</xs:sequence>
<xs:element name="other" type="xs:Name" />
</xs:complexType>
Определение в схеме данных будет выглядеть так:
<xs:element name="item" type="itemType" /><!-- referenced element -->
<xs:complexType name="itemType">
<xs:sequence>
<xs:element name="code" type="xs:Name" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="description" type="xs:normalizedString" use="required" />
</xs:complexType>