В основном это ссылается на другой элемент, который delared в другом месте, которое может или не может быть той же самой схеме документа. Например, это может быть связано с внешней ссылкой на схему в другом пространстве имен. Предположим, вы используете элемент элемент в нескольких различных схемах, вы можете объявить его (и любые другие распространенные типы и атрибуты) в схеме общего назначения, а затем повторно использовать их во всех своих других схемах. Если вы ссылаетесь вашей общей схемы с пространством имен с, вы можете объявить экземпляр пункта 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>
Я проголосовал за это, так как это хорошее объяснение. Однако атрибут ref ссылается на внешний объект по его «id», а не по «name». Для вашего примера для работы объявление «item» во втором блоке кода должно быть: –
rjray
Согласно всей документации XSD I «видел», «ref» относится к «имени», как показано здесь: http://www.w3schools.com/schema/el_element.asp (ref - необязательно). Относится к имени другого элемента. ...) – grkvlt
Когда можно было бы выбрать тип ссылки? – pikachu0