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>
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
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
Kiedy należy wybrać rodzaj ref over? – pikachu0