2009-09-19 2 views
42

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

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

ответ

61

В основном это ссылается на другой элемент, который 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> 
+4

Я проголосовал за это, так как это хорошее объяснение. Однако атрибут ref ссылается на внешний объект по его «id», а не по «name». Для вашего примера для работы объявление «item» во втором блоке кода должно быть: rjray

+9

Согласно всей документации XSD I «видел», «ref» относится к «имени», как показано здесь: http://www.w3schools.com/schema/el_element.asp (ref - необязательно). Относится к имени другого элемента. ...) – grkvlt

+1

Когда можно было бы выбрать тип ссылки? – pikachu0

5

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

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

Смежные вопросы