По сути, он ссылается на другой элемент, который рассматривается в другом месте, который может быть или не быть тем же документом схемы. Например, он может быть получен из схемы с внешней ссылкой в другом пространстве имен. Предположим, что вы часто используете элемент item в нескольких различных схемах, вы можете объявить его (и любые другие общие типы и атрибуты) в схеме common , а затем повторно использовать их во всех ваших схемах. другие схемы. Если вы ссылаетесь на свою общую схему с пространством имен c , вы можете объявить экземпляр элемента item самостоятельно или как часть типа следующим образом:
<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>