Giới hạn/Facets của XSD
- Trang trước Thuộc tính của XSD
- Trang tiếp theo Yếu tố phức hợp của XSD
Giới hạn (restriction) được sử dụng để định nghĩa các giá trị được chấp nhận cho phần tử XML hoặc thuộc tính. Giới hạn của phần tử XML được gọi là góc cạnh.
Giới hạn giá trị
Dưới đây là ví dụ định nghĩa một phần tử có giới hạn và tên là "age". Giá trị của age không thể thấp hơn 0 hoặc cao hơn 120:
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>
Giới hạn một nhóm các giá trị
Để giới hạn nội dung của phần tử XML là một nhóm các giá trị được chấp nhận, chúng ta cần sử dụng ràng buộc liệt kê (enumeration constraint).
Ví dụ tiếp theo định nghĩa một phần tử có tên định danh là "car" với một giới hạn. Giá trị được chấp nhận chỉ có: Audi, Golf, BMW:
<xs:element name="car"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ trên cũng có thể được viết như sau:
<xs:element name="car" type="carType"/> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
Ghi chú:Trong trường hợp này, loại "carType" có thể được sử dụng bởi các phần tử khác vì nó không phải là một phần của phần tử "car".
Giới hạn một loạt các giá trị
Để giới hạn nội dung của phần tử XML là một chuỗi các số hoặc chữ cái có thể sử dụng, chúng ta cần sử dụng ràng buộc mẫu (pattern constraint).
Ví dụ tiếp theo định nghĩa một phần tử có tên định danh là "letter" với một giới hạn. Giá trị được chấp nhận chỉ là một trong số các chữ cái in thường từ a đến z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ tiếp theo định nghĩa một phần tử có tên định danh là "initials" với một giới hạn. Giá trị được chấp nhận là ba chữ cái in hoa từ A đến Z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ tiếp theo cũng định nghĩa một phần tử có tên định danh là "initials" với một giới hạn. Giá trị được chấp nhận là ba chữ cái in hoa hoặc in thường từ a đến z:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ tiếp theo định nghĩa một phần tử có tên định danh là "choice" với một giới hạn. Giá trị được chấp nhận là một trong số các chữ cái x, y hoặc z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ tiếp theo định nghĩa một phần tử có tên định danh là "prodid" với một giới hạn. Giá trị được chấp nhận là một chuỗi năm chữ số Arập, mỗi chữ số trong khoảng từ 0 đến 9:
<xs:element name="prodid"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> </xs:restriction> </xs:simpleType> </xs:element>
Các quy định khác cho một loạt các giá trị
Ví dụ sau đây định nghĩa một phần tử có tên được quy định là "letter" với các giá trị được chấp nhận là một hoặc nhiều ký tự từ a-z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ sau đây định nghĩa một phần tử có tên được quy định là "letter" với các giá trị được chấp nhận là một cặp hoặc nhiều cặp chữ cái, mỗi cặp bao gồm một chữ cái in thường sau một chữ cái in hoa. Ví dụ, "sToP" sẽ thông qua kiểm tra này, nhưng "Stop", "STOP" hoặc "stop" sẽ không thể thông qua kiểm tra:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ sau đây định nghĩa một phần tử có tên được quy định là "gender" với các giá trị được chấp nhận là male hoặc female:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ sau đây định nghĩa một phần tử có tên được quy định là "password" với một phần tử có tên là "password" được thiết lập thành một dòng ký tự có 8 ký tự, các ký tự này phải là chữ cái in hoa hoặc in thường từ a-z hoặc số từ 0 đến 9:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> </xs:element>
Quy định ký tự trống
Để quy định cách xử lý các ký tự trống (ký tự trắng), chúng ta cần sử dụng quy định "whiteSpace".
Ví dụ sau đây định nghĩa một phần tử có tên được quy định là "address" với một phần tử có tên là "whiteSpace" được thiết lập thành "preserve", điều này có nghĩa là bộ xử lý XML sẽ không xóa bỏ bất kỳ ký tự trống nào:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ này cũng định nghĩa một phần tử có tên được quy định là "address" với một phần tử có tên là "whiteSpace" được thiết lập thành "replace", điều này có nghĩa là bộ xử lý XML sẽ xóa bỏ tất cả các ký tự trống (dấu ngắt dòng, dấu cách, tab và ký tự cách dòng):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ này cũng định nghĩa một phần tử có tên là "address" với một giới hạn. Giới hạn whiteSpace được đặt thành "collapse", điều này có nghĩa là bộ xử lý XML sẽ loại bỏ tất cả các ký tự trắng (các ký tự mới dòng, phím Enter, dấu cách và tab sẽ được thay thế bằng một dấu cách, các dấu cách ở đầu và cuối sẽ bị loại bỏ, và các dấu cách liên tiếp sẽ được giảm còn một dấu cách duy nhất):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Giới hạn về độ dài
Để giới hạn độ dài của giá trị trong phần tử, chúng ta cần sử dụng các giới hạn length, maxLength và minLength.
Ví dụ này định nghĩa một phần tử có tên là "password" với một giới hạn và chính xác 8 ký tự:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Ví dụ này cũng định nghĩa một phần tử có tên là "password" với một giới hạn. Giá trị của nó phải từ 5 đến 8 ký tự:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Giới hạn của loại dữ liệu
Giới hạn | Mô tả |
---|---|
enumeration | Định nghĩa danh sách các giá trị được chấp nhận. |
fractionDigits | Định nghĩa số lượng lớn nhất của số phần thập phân được phép. Phải lớn hơn hoặc bằng 0. |
length | Định nghĩa số lượng chính xác của ký tự hoặc mục trong danh sách được phép. Phải lớn hơn hoặc bằng 0. |
maxExclusive | Định nghĩa giá trị trên cùng của số. Các giá trị được phép phải nhỏ hơn giá trị này. |
maxInclusive | Định nghĩa giá trị trên cùng của số. Các giá trị được phép phải nhỏ hơn hoặc bằng giá trị này. |
maxLength | Định nghĩa số lượng lớn nhất của ký tự hoặc mục trong danh sách được phép. Phải lớn hơn hoặc bằng 0. |
minExclusive | Định nghĩa giá trị dưới cùng của số. Các giá trị được phép phải lớn hơn giá trị này. |
minInclusive | Định nghĩa giá trị thấp nhất của số. Các giá trị được phép phải lớn hơn hoặc bằng giá trị này. |
minLength | Định nghĩa số lượng tối thiểu của ký tự hoặc mục liệt kê được phép. Phải lớn hơn hoặc bằng 0. |
pattern | Định nghĩa chuỗi chính xác của ký tự được chấp nhận. |
totalDigits | Định nghĩa số lượng chính xác của số阿拉伯 số cho phép. Phải lớn hơn 0. |
whiteSpace | Định nghĩa cách xử lý ký tự trống (xuất xứ, enter, khoảng trống và tab). |
- Trang trước Thuộc tính của XSD
- Trang tiếp theo Yếu tố phức hợp của XSD