Về cơ bản nó tham chiếu khác yếu tố đó được delared nơi khác, mà có thể hoặc không có thể là tài liệu giản đồ tương tự. Ví dụ, nó có thể đến từ một lược đồ được tham chiếu bên ngoài trong một không gian tên khác. Giả sử bạn sử dụng phần tử mục rất nhiều trong nhiều lược đồ khác nhau, bạn có thể khai báo nó (và bất kỳ loại và thuộc tính phổ biến nào khác) trong lược đồ phổ biến và sau đó sử dụng lại các lược đồ đó trong tất cả các lược đồ khác của bạn. Nếu bạn tham khảo chung giản đồ của bạn với không gian tên c, bạn có thể khai báo một thể hiện của các mục elemnt ngày của riêng mình hoặc là một phần của một loại như sau:
<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>
Định nghĩa trong các dữ liệu lược đồ sẽ trông giống như sau:
<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>
Tôi đã bỏ phiếu này vì đây là giải thích tốt. Tuy nhiên, thuộc tính ref đề cập đến một thực thể bên ngoài bởi "id" của nó, không phải là "name". Để ví dụ của bạn hoạt động, khai báo "mục" trong khối mã thứ hai cần phải là: –
rjray
Theo tất cả tài liệu XSD tôi đã thấy, "ref" áp dụng cho một "tên", như được thấy ở đây: http://www.w3schools.com/schema/el_element.asp (ref - Tùy chọn. Đề cập đến tên của một phần tử khác. ...) – grkvlt
Khi nào thì người ta chọn ref trên loại? – pikachu0