Подтвердить что ты не робот

Что делает атрибут ref для элемента в XSD?

Документация, похоже, говорит о том, что она ссылается на другой элемент схемы, но как ее можно использовать - я никогда не видел ее в схемах, с которыми я работал.

Кто-нибудь получил какие-либо хорошие варианты использования или что-то, что могло бы объяснить его использование дальше?

4b9b3361

Ответ 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>

Ответ 2

Например, если вы хотите объявить типы элементов, которые могут отображаться глубоко вложенными, но также и как элементы верхнего уровня в документе экземпляра.

В XML-схеме Primer есть примеры для этого: http://www.w3.org/TR/xmlschema-0/