XSD 限定 / Facets
- Trang trước Thuộc tính của XSD
- Trang tiếp theo Yếu tố XSD
Ràng buộc (restriction) được sử dụng để định nghĩa các giá trị được chấp nhận cho phần tử hoặc thuộc tính XML. Ràng buộc cho phần tử XML được gọi là facet.
Ràng buộc giá trị
Ví dụ sau đây định nghĩa một phần tử được xác định và tên là "age" có một giới hạn. 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>
Ràng buộc một nhóm các giá trị
Nếu cần hạn chế 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 danh sách (enumeration constraint).
Ví dụ sau đây định nghĩa một phần tử được xác định tên là "car" có một giới hạn. Giá trị được chấp nhận chỉ là: 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à thành phần của phần tử "car".
Ràng buộc một loạt các giá trị
Nếu cần hạn chế nội dung của phần tử XML là một loạt 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ụ sau đây định nghĩa một phần tử được xác định tên là "letter" có một giới hạn. Giá trị được chấp nhận chỉ là một 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>
Một ví dụ tiếp theo định nghĩa một phần tử được xác định tên là "initials" có một giới hạn. Giá trị được chấp nhận là các chữ cái in hoa từ A đến Z trong ba ký tự:
<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>
Một ví dụ tiếp theo cũng định nghĩa một phần tử được xác định tên là "initials" có một giới hạn. Giá trị được chấp nhận là các chữ cái in hoa hoặc in thường từ a đến z trong ba ký tự:
<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 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ố阿拉伯数字, và mỗi chữ số trong chuỗi này thuộc 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>
Giới hạn khác cho một loạt giá trị
Dưới đây là ví dụ đị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 là không có 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>
Dưới đây là ví dụ đị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 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 đó là một chữ cái in hoa. Ví dụ, "sToP" sẽ được xác nhận bởi mẫu này, nhưng "Stop", "STOP" hoặc "stop" sẽ không được xác nhận:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
Dưới đây là ví dụ định nghĩa một phần tử có tên định danh là "gender" với một giới hạn. 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>
Dưới đây là ví dụ định nghĩa một phần tử có tên định danh là "password" với một giới hạn. Giá trị được chấp nhận là một dòng ký tự bao gồm 8 ký tự, các ký tự này phải là chữ cái in hoa hoặc in thường a - z hoặc số 0 - 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>
Giới hạn 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 giới hạn whiteSpace.
Dưới đây là ví dụ định nghĩa một phần tử có tên định danh là "address" với một giới hạn. Giới hạn whiteSpace được đặt là "preserve", điều này có nghĩa là bộ xử lý XML sẽ không xóa 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 là "address" với một giới hạn. Giá trị whiteSpace của giới hạn này được đặt là "replace", đ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 (ký tự mới dòng, ký tự trả về, ký tự trắng và ký tự tab):
<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á trị whiteSpace của giới hạn này được đặt là "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 (ký tự mới dòng, ký tự trả về, ký tự trắng và ký tự tab sẽ được thay thế bằng một ký tự trắng, các ký tự trắng ở đầu và cuối sẽ bị loại bỏ, và các ký tự trắng liên tiếp sẽ được giảm xuống một ký tự trắng 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 độ 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. Giá trị của nó phải 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 lớn hơn hoặc bằng 5 ký tự và nhỏ hơn hoặc bằng 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 loại dữ liệu
Giới hạn | Mô tả |
---|---|
enumeration | Định nghĩa một danh sách các giá trị được chấp nhận. |
fractionDigits | Định nghĩa số lượng chữ số thập phân lớn nhất đượ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 các ký tự hoặc cá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 một số. Các giá trị được phép phải nhỏ hơn giá trị này. |
maxInclusive | Định nghĩa giá trị cao nhất 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 tối đa của ký tự hoặc mục trong danh sách cho phép. Phải lớn hơn hoặc bằng 0. |
minExclusive | Đị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 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 trong danh sách cho 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 (ngắt dòng, enter, khoảng trống và tab). |
- Trang trước Thuộc tính của XSD
- Trang tiếp theo Yếu tố XSD