thành phần XML Schema
Định nghĩa và cách sử dụng
element định nghĩa một thành phần.
Thông tin thành phần
số lần xuất hiện | số lượng thành phần được định nghĩa trong cấu trúc. |
thành phần cha | schema、choice、all、sequence |
nội dung | simpleType、complexType、key、keyref、unique |
cú pháp
<element id=ID name=NCName ref=QName type=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified maxOccurs=nonNegativeInteger|unbounded minOccurs=số nguyên dương không nillable=true|false abstract=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?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(? Ký hiệu được sử dụng trong phần tử element, phần tử này có thể xuất hiện 0 lần hoặc 1 lần, * ký hiệu được sử dụng cho phần tử có thể xuất hiện 0 lần hoặc nhiều lần.)
Thuộc tính
id
Tùy chọn. Quy định ID duy nhất của phần tử.
name
Tùy chọn. Quy định tên của phần tử. Nếu phần tử cha là phần tử schema, thì thuộc tính này là bắt buộc.
ref
Tùy chọn. Tham chiếu đến phần tử khác. Thuộc tính ref có thể chứa tiền tố tên không gian. Nếu phần tử cha là phần tử schema, thì không sử dụng thuộc tính này.
type
Tùy chọn. Quy định tên của loại dữ liệu trong suốt, hoặc quy định tên của phần tử simpleType hoặc complexType.
substitutionGroup
Tùy chọn. Quy định tên của phần tử có thể thay thế phần tử này. Phần tử đó phải có cùng loại hoặc là loại được chiết xuất từ loại phần tử đã chỉ định.
Nếu phần tử cha không phải là phần tử schema, thì không thể sử dụng thuộc tính này.
default
Tùy chọn. Đặt giá trị mặc định cho phần tử (chỉ sử dụng khi nội dung của phần tử là loại dữ liệu đơn giản hoặc textOnly).
fixed
Tùy chọn. Đặt giá trị cố định cho phần tử (chỉ sử dụng khi nội dung của phần tử là loại dữ liệu đơn giản hoặc textOnly).
form
Tùy chọn. Hình thức của phần tử. Giá trị mặc định là giá trị của thuộc tính elementFormDefault của phần tử schema chứa thuộc tính này. Giá trị này phải là một trong các chuỗi sau: "qualified" hoặc "unqualified".
Nếu phần tử cha là phần tử schema, thì không thể sử dụng thuộc tính này.
- Nếu giá trị này là "unqualified", thì không cần sử dụng tiền tố tên không gian để xác định phần tử này.
- Nếu giá trị này là "qualified", thì phải sử dụng tiền tố tên không gian để xác định phần tử này.
maxOccurs
Tùy chọn. Quy định số lần tối đa mà element có thể xuất hiện trong phần tử cha. Giá trị này có thể là một số nguyên dương hoặc bằng không. Nếu không muốn đặt bất kỳ giới hạn nào cho số lần tối đa, hãy sử dụng chuỗi "unbounded". Giá trị mặc định là 1.
Nếu phần tử cha là phần tử schema, thì không thể sử dụng thuộc tính này.
minOccurs
Tùy chọn. Quy định số lần tối thiểu mà phần tử element có thể xuất hiện trong phần tử cha. Giá trị có thể là số nguyên dương hoặc bằng không. Giá trị mặc định là 1.
Nếu phần tử cha là phần tử schema, thì không thể sử dụng thuộc tính này.
nillable
Tùy chọn. Chỉ định có thể phân phối giá trị mặc định là không (nil) cho phần tử này hay không. Điều này áp dụng cho nội dung của phần tử và không phải là thuộc tính của phần tử. Giá trị mặc định là false.
Nếu nillable là true, sẽ cho phép phần tử của phần tử này có thể đặt thuộc tính nil là true. Thuộc tính nil được định nghĩa là một phần của không gian tên XML cú pháp của phần tử.
Ví dụ, đoạn dưới định nghĩa một phần tử đơn lẻ, đồng thời đặt nillable là true.
<xs:element name="myDate" type="xs:date" nillable="true"/>
Dưới đoạn sử dụng phần tử này và có giá trị mặc định là không (nil thuộc tính được đặt là true).
<myDate xsi:nil="true"></myDate>
abstract
Tùy chọn. Chỉ định phần tử có thể được sử dụng trong tài liệu mẫu hay không. Nếu giá trị là true, phần tử này không thể xuất hiện trong tài liệu mẫu. Ngược lại, thuộc tính substitutionGroup chứa phần tử có tên định danh (QName) khác của phần tử này phải xuất hiện ở vị trí của phần tử này. Nhiều phần tử có thể tham chiếu đến phần tử này trong thuộc tính substitutionGroup. Giá trị mặc định là false.
block
Tùy chọn. Kiểu phân chi. Thuộc tính block chặn phần tử có loại phân chi được chỉ định không được sử dụng để thay thế phần tử này. Giá trị có thể chứa #all hoặc một danh sách, danh sách này là tập con của extension, restriction hoặc substitution:
- extension - Chặn phần tử được phân chi ra thay thế phần tử này thông qua việc mở rộng.
- restriction - Chặn phần tử được phân chi ra thay thế phần tử này thông qua việc giới hạn.
- substitution - Chặn phần tử được phân chi ra thay thế phần tử này thông qua việc thay thế.
- #all - Chặn tất cả các phần tử được phân chi ra thay thế phần tử này.
final
Tùy chọn. Đặt giá trị mặc định của thuộc tính final trên phần tử element. Nếu phần tử cha không phải là phần tử schema, thì không thể sử dụng thuộc tính này. Giá trị có thể chứa #all hoặc một danh sách, danh sách này là tập con của extension hoặc restriction:
- extension - Giải thích để các phần tử được dẫn xuất có mở rộng không được sử dụng để thay thế phần tử này
- restriction - Giải thích để các phần tử được dẫn xuất có giới hạn không được sử dụng để thay thế phần tử này
- #all - Giải thích để các phần tử được dẫn xuất không được sử dụng để thay thế phần tử này
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 có không gian tên không phải schema.
Thực tế
Ví dụ 1
Ví dụ sau là một schema có bốn phần tử đơn giản: "fname", "lname", "age" và "dateborn", loại là string, nonNegativeInteger và date:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="fname" type="xs:string"/> <xs:element name="lname" type="xs:string"/> <xs:element name="age" type="xs:nonNegativeInteger"/> <xs:element name="dateborn" type="xs:date"/> </xs:schema>
Ví dụ 2
Ví dụ sau là một schema có phần tử loại phức tạp "note" với bốn phần tử đơn giản: "to", "from", "heading" và "body":
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <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> </xs:schema>
Ví dụ 3
Ví dụ này giống với ví dụ 2, nhưng trong ví dụ này, chúng ta chọn sử dụng thuộc tính ref để tham chiếu tên phần tử:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element ref="to"/> <xs:element ref="from"/> <xs:element ref="heading"/> <xs:element ref="body"/> </xs:sequence> </xs:complexType> </xs:element> <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:schema>