Hãy xem xét các giản đồ sau:Sự khác nhau giữa ref và kiểu trong lược đồ XML là gì?
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Root">
<xs:sequence>
<xs:element ref="Child" />
<xs:element name="Child2" type="Child" />
</xs:sequence>
<xs:attribute ref="Att" />
<xs:attribute name="Att2" type="Att" />
</xs:complexType>
<xs:complexType name="Child">
<xs:attribute ref="Att" />
</xs:complexType>
<xs:attribute name="Att" type="xs:integer" />
</xs:schema>
Các ref
để "trẻ em" trên dòng 6 thất bại, trong khi type
trên dòng 7 xác nhận. Đối với thuộc tính, các ref
thành công trong khi type
không thành công. Tôi đang cố hiểu tại sao.
Sự hiểu biết của tôi về ref
là nó chỉ đơn giản gọi một phần tử khác và xác định rằng bạn mong đợi để xem một thể hiện của kiểu được gọi (với tên được đưa ra trong định nghĩa) tại vị trí đó. Rõ ràng là tôi sai, vậy thì ref
thực sự có ý nghĩa gì?
OK, tôi hiểu rằng 'loại' chỉ có thể tham chiếu đến định nghĩa loại - điều đó có ý nghĩa. Nhưng để làm rõ về 'ref': nó chỉ có thể trỏ đến một thể hiện trước của một phần tử và chèn một bản sao của nó? –
Có, tôi nghĩ có thể nói theo cách này (nếu "ví dụ" có nghĩa là một số yếu tố cấp cao nhất được khai báo ở đâu đó trong xsd). Một điểm khác biệt: khi bạn sử dụng 'loại' thì bạn có thể có hai phần tử có tên khác với cùng cấu trúc. Khi bạn sử dụng 'ref' thì bạn có các phần tử có cùng tên hoặc cấu trúc ở mọi nơi. –