Chỉ thị loại phức hợp của XSD
- Trang trước Nội dung lai rai của XSD
- Trang tiếp theo XSD <any>
Qua chỉ thị, chúng ta có thể kiểm soát cách sử dụng các yếu tố trong tài liệu.
Chỉ thị
Có bảy loại chỉ thị:
指示器:Order
- All
- Choice
- Sequence
指示器:Occurrence
- maxOccurs
- minOccurs
Chỉ thị Group:
- Group name
- attributeGroup name
Chỉ thị Order
Chỉ thị Order được sử dụng để định nghĩa thứ tự của các phần tử.
Chỉ thị All
<all> chỉ thị quy định các phần tử con có thể xuất hiện theo bất kỳ thứ tự nào, và mỗi phần tử con 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
<choice> chỉ thị quy định một phần tử con có thể xuất hiện hoặc một phần tử con khác (hoặc này hoặc kia):
<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 ý:Để thiết lập phần tử con xuất hiện nhiều lần, bạn có thể đặt <maxOccurs> (sẽ được giải thích sau) là unbounded (vô hạn lần).
Chỉ thị Sequence
<sequence> quy định các phần tử con phải xuất hiện theo thứ tự nhất định:
<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 phần 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ị có thể quy định số lần xuất hiện tối đa của một phần 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>
Các ví dụ trên cho thấy, phần tử con "child_name" có thể xuất hiện trong phần tử "person" ít nhất một lần (trong đó giá trị mặc định của minOccurs là 1), nhiều nhất 10 lần.
Chỉ thị minOccurs
<minOccurs> chỉ thị có thể quy định số lần xuất hiện tối thiểu của một phần 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>
Các ví dụ trên cho thấy, phần tử con "child_name" có thể xuất hiện trong phần tử "person" ít nhất 0 lần, nhiều nhất 10 lần.
Lưu ý:Nếu bạn muốn không giới hạn số lần xuất hiện của một phần tử, 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 phần tử gốc này, chúng ta đã định nghĩa ba phần tử "person". Mỗi phần tử "person" phải chứa một phần tử "full_name", đồng thời nó có thể chứa nhiều nhất 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 để định nghĩa một số phần tử liên quan.
Nhóm phần tử
Nhóm phần tử được định nghĩa bằng cách sử dụng biểu thức group:
<xs:group name="组名称"> ... </xs:group>
Bạn phải định nghĩa một phần tử all, choice hoặc sequence trong biểu thức group. Dưới đây là ví dụ về việc đị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ó 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 biểu thức attributeGroup:
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
Dưới đây là ví dụ về việc đị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ó 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 lai rai của XSD
- Trang tiếp theo XSD <any>