2009-09-19 26 views
42

Tài liệu dường như nói rằng nó tham chiếu đến một phần tử khác trong lược đồ, nhưng làm thế nào nó có thể được sử dụng - Tôi chưa bao giờ thấy nó trong các lược đồ mà tôi đã làm việc.Thuộc tính ref trên một phần tử trong một XSD làm gì?

Bất kỳ ai có bất kỳ trường hợp sử dụng hợp lý nào hoặc điều gì đó có thể giải thích về việc sử dụng thêm?

Trả lời

61

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

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

+9

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

+1

Khi nào thì người ta chọn ref trên loại? – pikachu0

5

Ví dụ: nếu bạn muốn khai báo các loại phần tử có thể xuất hiện lồng nhau sâu, nhưng cũng như các phần tử cấp cao nhất trong tài liệu thể hiện.

XML Schema Primer có ví dụ cho điều này: http://www.w3.org/TR/xmlschema-0/

Các vấn đề liên quan