Chỉ thị loại phức hợp của XSD
- Trang trước Nội dung hỗn hợp của XSD
- Trang tiếp theo XSD <any>
Bằng chỉ thị, chúng ta có thể kiểm soát cách sử dụng phần tử trong tài liệu.
Chỉ thị
Có bảy chỉ thị:
Chỉ thị thứ tự:
- Tất cả
- Lựa chọn
- Thứ tự
Chỉ thị xuất hiện:
- maxOccurs
- minOccurs
Chỉ thị nhóm:
- Tên nhóm
- attributeGroup name
Chỉ thị Order
Chỉ thị Order được sử dụng để định nghĩa thứ tự của yếu tố.
Chỉ thị All
Chỉ thị <all> quy định yếu tố con có thể xuất hiện theo bất kỳ thứ tự nào, và mỗi yếu tố con phải chỉ xuất hiện một lần:
<xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>
Ghi chú:Khi sử dụng chỉ thị <all>, bạn có thể đặt <minOccurs> là 0 hoặc 1, và chỉ có thể đặt chỉ thị <maxOccurs> là 1 (sẽ được giải thích về <minOccurs> và <maxOccurs> sau).
Chỉ thị Choice
Chỉ thị <choice> quy định một yếu tố con có thể xuất hiện hoặc một yếu tố con khác (hoặc không hoặc không):
<xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element>
Lưu ý:Nếu muốn thiết lập yếu tố con xuất hiện bất kỳ lần nào, hãy đặt <maxOccurs> (sẽ được giải thích sau) là unbounded (vô hạn).
Chỉ thị Sequence
<sequence> quy định yếu tố con phải xuất hiện theo thứ tự cụ thể:
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Chỉ thị Occurrence
Chỉ thị Occurrence được sử dụng để định nghĩa tần suất xuất hiện của một yếu tố.
Ghi chú:Đối với tất cả các chỉ thị "Order" và "Group" (any, all, choice, sequence, tên nhóm và tham chiếu nhóm), giá trị mặc định của maxOccurs và minOccurs đều là 1.
Chỉ thị maxOccurs
<maxOccurs> chỉ thị quy định số lần xuất hiện tối đa của một yếu tố:
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string"> maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element>
Ví dụ trên cho thấy, yếu tố con "child_name" có thể xuất hiện ít nhất 1 lần trong yếu tố "person" (giá trị mặc định của minOccurs là 1), nhiều nhất 10 lần.
Chỉ thị minOccurs
<minOccurs> chỉ thị quy định số lần xuất hiện tối thiểu của một yếu tố:
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string"> maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>
Ví dụ trên cho thấy, yếu tố con "child_name" có thể xuất hiện trong yếu tố "person" ít nhất 0 lần, nhiều nhất 10 lần.
Lưu ý:Nếu muốn số lần xuất hiện của một yếu tố không bị giới hạn, hãy sử dụng khai báo maxOccurs="unbounded":
Một ví dụ thực tế:
Tệp XML tên là "Myfamily.xml":
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Tony Smith</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>David Smith</full_name> <child_name>Jogn</child_name> <child_name>mike</child_name> <child_name>kyle</child_name> <child_name>mary</child_name> </person> <person> <full_name>Michael Smith</full_name> </person> </persons>
Tệp XML này chứa một phần tử gốc tên là "persons" trong đó chúng ta đã định nghĩa ba phần tử "person" trong đó mỗi phần tử "person" phải chứa một phần tử "full_name" và có thể chứa nhiều đến 5 phần tử "child_name".
Đây là tệp schema "family.xsd":
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string"> minOccurs="0" maxOccurs="5"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Chỉ thị Group
Chỉ thị Group được sử dụng để xác định các phần tử nhóm liên quan.
Nhóm phần tử
Nhóm phần tử được định nghĩa bằng cách sử dụng câu lệnh group:
<xs:group name="组名称"> ... </xs:group>
Bạn phải định nghĩa một phần tử all, choice hoặc sequence trong câu lệnh group. Ví dụ sau đây định nghĩa group có tên là "persongroup", nó định nghĩa một nhóm phần tử phải xuất hiện theo thứ tự chính xác:
<xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group>
Sau khi bạn đã hoàn thành việc định nghĩa group, bạn có thể tham chiếu đến nó trong một định nghĩa khác:
<xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group> <xs:element name="person" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:group ref="persongroup"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType>
Nhóm thuộc tính
Nhóm thuộc tính được định nghĩa bằng cách sử dụng câu lệnh attributeGroup:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
Ví dụ sau đây định nghĩa một nhóm thuộc tính có tên là "personattrgroup":
<xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup>
Sau khi bạn đã hoàn thành việc định nghĩa nhóm thuộc tính, bạn có thể tham chiếu đến nó trong một định nghĩa khác, giống như thế này:
<xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup> <xs:element name="person"> <xs:complexType> <xs:attributeGroup ref="personattrgroup"/> </xs:complexType> </xs:element>
- Trang trước Nội dung hỗn hợp của XSD
- Trang tiếp theo XSD <any>