2009-09-19 12 views
42

Dokumentacja wydaje się mówić, że odwołuje się do innego elementu w schemacie, ale w jaki sposób można go użyć - nigdy nie widziałem go w schematach, z którymi pracowałem.Co robi atrybut ref elementu w XSD?

Ktoś ma jakieś przyjemne przypadki użycia lub coś, co mogłoby wyjaśnić jego użycie dalej?

Odpowiedz

61

Zasadniczo odwołuje to kolejny element, który jest delared innych miejscach, które mogą lub nie mogą być takie same dokument schematu. Na przykład może pochodzić z zewnętrznego schematu w innej przestrzeni nazw. Przypuśćmy, że użyjesz elementu item w wielu różnych schematach, możesz zadeklarować go (i wszystkie inne typowe typy i atrybuty) w schemacie wspólnym, a następnie ponownie użyć tych we wszystkich innych schematach. Jeśli odwołać swój wspólnego schematu z nazw c można zadeklarować instancję poz elemnt w postaci własnej lub jako część typu następująco:

<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> 

definicją w danych Schemat będzie wyglądał następująco:

<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

Wezwałem to, ponieważ jest to dobre wytłumaczenie. Jednak atrybut ref odnosi się do podmiotu zewnętrznego przez jego "identyfikator", a nie "nazwę". Aby Twój przykład zadziałał, deklaracja "pozycji" w drugim bloku musi być: rjray

+9

Zgodnie z całą dokumentacją XSD "Widziałem," ref "odnosi się do" nazwy ", jak widać tutaj: http://www.w3schools.com/schema/el_element.asp (ref - Opcjonalnie Odwołuje się do nazwy innego elementu ...) – grkvlt

+1

Kiedy należy wybrać rodzaj ref over? – pikachu0

5

Na przykład, jeśli chcesz zadeklarować typy elementów, które mogą wyglądać na zagnieżdżone, ale także jako elementy najwyższego poziomu w dokumencie instancji.

XML Schema Primer ma przykładów na to: http://www.w3.org/TR/xmlschema-0/