Phần tử complexType XML Schema

Định nghĩa và cách sử dụng

complexType phần tử định nghĩa loại phức tạp. Các phần tử loại phức tạp là các phần tử XML chứa các phần tử khác và/hoặc thuộc tính.

Thông tin phần tử

Số lần xuất hiện Trong cấu trúc không có giới hạn; trong phần tử chỉ một lần.
Element cha element、redefine、schema
Nội dung annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute

Ngữ pháp

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|danh sách của (extension|restriction))
final=(#all|danh sách của (extension|restriction))
bất kỳ thuộc tính nào
>
(annotation?,(simpleContent|complexContent|((group|all| 
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>

(? ký hiệu đượcdeclare trong yếu tố complexType, yếu tố có thể xuất hiện 0 hoặc 1 lần, * ký hiệu đượcdeclare yếu tố có thể xuất hiện 0 hoặc nhiều lần.)

Thuộc tính

id

Tùy chọn. Quy định ID duy nhất của yếu tố.

name

Tùy chọn. Quy định tên của yếu tố.

abstract

Tùy chọn. Quy định có thể sử dụng loại phức tạp trong tài liệu mẫu hay không. Nếu giá trị là true, thì yếu tố không thể sử dụng trực tiếp loại phức tạp này mà phải sử dụng loại phức tạp phái sinh từ loại phức tạp này. Giá trị mặc định là false.

mixed

Tùy chọn. Quy định có cho phép dữ liệu ký tự xuất hiện giữa các thành phần con của loại phức tạp này hay không. Giá trị mặc định là false.

  • Nếu yếu tố simpleContent là thành phần con, thì không được phép thuộc tính mixed.
  • Nếu yếu tố complexContent là thành phần con, thì thuộc tính mixed có thể bị ghi đè bởi thuộc tính mixed của yếu tố complexContent.

block

Tùy chọn. Ngăn chặn các loại phức tạp có loại phái sinh được chỉ định được sử dụng để thay thế loại phức tạp này. Giá trị này có thể chứa #all hoặc một danh sách, danh sách này là một bộ phận của extension hoặc restriction:

  • extension - Ngăn chặn các loại phái sinh phức tạp được sử dụng để thay thế loại phức tạp này qua việc mở rộng.
  • restriction - Ngăn chặn các loại phái sinh phức tạp được sử dụng để thay thế loại phức tạp này qua việc giới hạn.
  • #all - Ngăn chặn tất cả các loại phái sinh phức tạp được sử dụng để thay thế loại phức tạp này.

final

Tùy chọn. Ngăn chặn các loại phái sinh từ yếu tố complexType được chỉ định. Giá trị này có thể chứa #all hoặc một danh sách, danh sách này là một bộ phận của extension hoặc restriction.

  • extension - Ngăn chặn thông qua việc mở rộng kế thừa.
  • restriction - Ngăn chặn thông qua việc hạn chế kế thừa.
  • #all - Ngăn chặn tất cả các loại kế thừa (mở rộng và hạn chế).

bất kỳ thuộc tính nào

Tùy chọn. Định nghĩa bất kỳ thuộc tính nào khác có không gian tên không theo schema.

Mô hình

Ví dụ 1

Ví dụ sau đây có một yếu tố phức tạp có tên là "note":

<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

Ví dụ 2

Trong ví dụ sau đây có một loại phức tạp "fullpersoninfo" được mở rộng bằng ba yếu tố bổ sung (address, city và country) để mở rộng loại kế thừa, được phân chi từ loại phức tạp "personinfo":

<xs:element name="employee" type="fullpersoninfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

Trong ví dụ trên, yếu tố "employee" ở trên phải chứa theo thứ tự các yếu tố sau: "firstname", "lastname", "address", "city" và "country".