Các xác định kiểu 1 Khái quát

Một phần của tài liệu Tiêu chuẩn Quốc gia TCVN 11523-2:2016 (Trang 41 - 44)

11.1 Khái quát

phải được dẫn xuất bởi giới hạn hoặc danh mục từ các kiểu dựng sẵn hoặc các kiểu dẫn xuất khác. Ngoài ra, dẫn xuất bằng việc hợp nhất được cho phép nếu các kiểu được thống nhất và dẫn xuất từ cùng một kiểu dữ liệu dựng sẵn.

VÍ DỤ Kiểu dẫn xuất bao gồm sự hợp nhất hai kiểu dẫn xuất từ xsd:string có thể được sử dụng trong mô tả socket.

Xem ‘Lược đồ XML Phần 2: Các kiểu dữ liệu’ để biết thêm chi tiết về cách dẫn xuất các kiểu trong XSD.

Thẻ gốc <uiSocket> (xem điều 6.1) có thể có một thẻ <xsd:schema> chúng xác định các kiểu. Thẻ <xsd:schema> không chứa thuộc tính ‘targetNamespace’. Các kiểu xác định bên trong mô tả socket chỉ là các kiểu cục bộ (không có định danh vùng tên), và không thể được tham chiếu bên ngoài mô tả socket.

Giá trị thuộc tính ‘name’ trên <xsd:simpleType> hoặc <xsd:complexType> phải là duy nhất trong số tất cả số lần xuất hiện của các thuộc tính ‘name’ và ‘id’ trên mọi thẻ XML trong tài liệu mô tả socket. CHÚ THÍCH Giá trị ‘name’ được sử dụng để quy định các nhãn và các tài nguyên nguyên tử khác cho các kiểu bên trong socket trong các tệp tài nguyên. Vì các tài nguyên nguyên tử cho các thẻ socket được quy định qua các thuộc tính ‘id’ của chúng cho nên các giá trị của tất cả các thuộc tính ‘name’ và ‘id’ là duy nhất.

11.2 Các facet

Kiểu biến phải được mô tả càng chính xác càng tốt trong định nghĩa socket. Các facet mô tả các khía cạnh của khoảng trống giá trị của kiểu phải được sử dụng. Có các facet cơ sở và facet ràng buộc. Xem Định nghĩa Lược đồ XML Phần 2 để biết thêm chi tiết.

VÍ DỤ Facet cơ sở “có thứ tự” có thể có các giá trị “false”, “partial” hoặc “total”. Giá trị của facet này có các phép tất duy về cách giá trị của biến có thể được sửa đổi bởi người sử dụng trong tầng trình diễn. Đối với biến mà có kiểu được sắp xếp thứ tự toàn bộ thì cơ chế đầu vào liên quan như là một con trượt hoặc lệnh “up” và “down” có thể được sử dụng.

Nếu có các giới hạn trên tập các giá trị hợp pháp cho biến, các giới hạn này phải được diễn tả bằng cách dẫn xuất một kiểu đơn giản mới từ kiểu Lược đồ XML cơ sở sử dụng các facet ràng buộc xác định trong Lược đồ XML Phần 2.

Các facet ràng buộc sẵn có như đã xác định trong Lược đồ XML Phần 2 là: length, minLength,

maxLength, patter, enumeration, whiteSpace, maxlnclusive, maxExclusive, minlnclusive, minExclusive. VÍ DỤ 2 Biến biểu diễn số seri của nhân viên có thể được khai báo là chuỗi có độ dài 9 ký tự với dẫn xuất từ kiểu dữ liệu string sau đây:

<xsd:simpleType name=“serialNumberType”> <xsd:restriction base=“xsd:string”> <xsd:length value=“9”/> </xsd:restriction>

</xsd:simpleType>

Một kiểu giới hạn lựa chọn cho tập các giá trị cụ thể có thể được diễn tả sử dụng facet liệt kê. VÍ DỤ 3 Lược đồ xác định các ngày nghỉ lễ được chỉ ra trong http://www.w3.org/TR/2001/REC- xmlschema-2- 20010502/#rf-fund-facets là một dẫn xuất của kiểu xsd:gMonthDay.

11.3 Danh mục các giá trị string

Kiểu uis:stringListItem được xác định trước như một khối hợp nhất cho đặc tả của kiểu cung cấp danh mục các giá trị string. uis:stringListltem được dẫn xuất từ chuỗi bởi sự giới hạn và không chứa bất cứ khoảng trắng nào. Tập tĩnh các giá trị string (tham khảo trong <selectionSetStatic>, xem điều 8.9.5) có thể được dẫn xuất từ uis:stringListltem bởi kết cấu liệt kê.

Kiểu uis:stringListltem phải được xác định trước là: <xsd:simpleType name=“stringListItem”>

<xsd:pattern value=“\S+” /> </xsd:restriction>

</xsd:simpleType>

VÍ DỤ Kiểu mới staticCityType được xác định rằng chứa một tập tĩnh các tên thành phố, như đã sử dụng trong ví dụ 3 của điều 8.9.5:

<xsd:simpleType name=“staticCityType”>

<xsd:restriction base=“uis:stringListItem”>

<xsd:enumeration value=“Washington, DC” /> <xsd:enumeration value=“Seattle, WA” /> <xsd:enumeration value=“Boston, MA” /> </xsd:restriction>

</xsd:simpleType>

Các facet: length, minLength, maxLength có thể được sử dụng để quy định các ràng buộc liên quan đến số thẻ mà biến danh mục có thể nắm giữ. Các facet khác có thể được sử dụng là enumeration và pattern.

Kiểu xác định trước uis:stringList có thể được sử dụng bởi người thực thi mô tả socket nhằm tham chiếu đến danh mục các chuỗi ở đó không có tập các giá trị mục nào được biết trước thời gian chạy: <xsd: simpleType name=“stringList”>

<xsd:list itemType=“uis:stringListltem” /> </xsd:simpleType>

CHÚ THÍCH Các kiểu xác định trước uis:stringListltem và uis:stringList được cung cấp nhằm tạo thuận lợi cho người thực thi mô tả socket. Nếu người thực thi muốn sử dụng các danh mục của kiểu trừ string thì họ cần sử dụng cú pháp cung cấp XSD cho việc dẫn xuất bởi danh mục và đảm bảo rằng các giá trị mục không chứa các khoảng trống.

11.4 Cấu trúc diễn tả trong khoảng trống giá trị của kiểu

Khoảng trống giá trị của biến có thể có một số lớn các giá trị có thể xảy ra và khoảng trống giá trị này có thể có một số cấu trúc tự nhiên, cấu trúc này có thể được biểu diễn bằng cách xác định kiểu của biến như một sự hợp nhất các kiểu con. (adsbygoogle = window.adsbygoogle || []).push({});

VÍ DỤ Kiểu cho các tên thành phố có thể được cấu trúc theo quốc gia và trạng thái như sau: <xsd:simpleType name=“worldCityListType”> <xsd:union memberTypes=“unitedStatesCityType ...” /> </xsd:simpleType> <xsd:simpleType name=“unitedStatesCityType”> <xsd:union memberTypes=“alaskaCityType ...” /> </xsd:simpleType> <xsd:simpleType name=“alaskaCityType”> <xsd:restriction base=“xsd:string”> <xsd:enumeration value=“anchorage”/> <xsd:enumeration value=“city2”/> </xsd:restrictions> </xsd:simpleTypes>

CHÚ THÍCH Cấu trúc diễn tả ở đây chỉ nhằm mục đích giải thích cho máy và các tài nguyên yêu cầu giải thích cho người sử dụng cấu trúc, như là các nhãn cho các kiểu và các giá trị được cung cấp riêng biệt.

11.5 Các kiểu bên trong socket

Socket có thể xác định các kiểu đơn giản hoặc phức tạp cho các biến và các thứ nguyên. Nó có thể làm được như vậy bằng cách sử dụng các thẻ <xsd:simpleType> và <xsd:complexType> (và các thẻ con thích hợp) như đã xác định trong Lược đồ XML Phần 1. Chúng được gọi là “các kiểu bên trong socket”.

Giá trị thuộc tính ‘name’ của các kiểu bên trong socket này phải là duy nhất trong số tất cả các thuộc tính ‘id’ và ‘name’ trong mô tả socket.

11.6 Nhập lược đồ

Nó có thể làm như vậy bằng cách sử dụng thẻ <xsd:import> như đã xác định trong Lược đồ XML Phần 1. Thẻ <import> phải có một thuộc tính ‘namespace’ và thuộc tính ‘schemaLocation’ với ý nghĩa được xác định trong Lược đồ XML Phần 1. Giá trị của thuộc tính ‘namespace’ phải ngang bằng với vùng tên đích của lược đồ bên ngoài tham chiếu bởi giá trị của thuộc tính ‘schemaLocation’.

Các xác định kiểu và thẻ từ vùng tên bên ngoài được nhập, có thể tham chiếu bởi các thẻ socket và các thứ nguyên qua định danh vùng tên và các tên kiểu (giá trị ‘name’).

CHÚ THÍCH Khác với XML Phần 1, việc định danh lược đồ bên ngoài không được tạo điều kiện. Trong mô tả socket, Thuộc tính ‘schemaLocation’ quy định rõ ràng làm thế nào để tìm ra tập lược đồ bên ngoài được nhập.

11.7 Các tham chiếu đến các kiểu bên ngoài socket

Các kiểu xác định trong các vùng tên khác có thể được tham chiếu bởi tên định tính đầy đủ của chúng (QName). Trong trường hợp này, vùng tên URI phải được quy định đầy đủ và vị trí của tệp định nghĩa lược đồ XML thích hợp nên được đưa ra bằng cách sử dụng thuộc tính ‘xsi:schemaLocation’,

CHÚ THÍCH Socket coi các giá trị của các kiểu phức tạp như kiểu dữ liệu string, cụ thể, khi sử dụng bên trong biểu thức Xpath đối với các phần phụ thuộc. Giả thiết không có việc kiểm tra nào dựa trên tính chính xác và tính hợp lệ. Tuy nhiên, nó có thể tạo ra các giá trị của kiểu phức tạp sẵn có cho các UIID trong định dạng đặc biệt thông qua API. Ví dụ, nó có thể đề nghị API dựa trên DOM cho các biến của các kiểu phức tạp.

11.8 Xác định thẻ

Socket có thể xác định các thẻ sử dụng trong các xác định kiểu phức tạp. Nó có thể làm được như vậy bằng cách sử dụng thẻ <xsd:element> (và các thẻ con thích hợp) như đã định nghĩa trong Lược đồ XML Phần 1. Thẻ <xsd:element> có thể xuất hiện như thẻ con của <xsd:schema> (xem Điều 11) hoặc bên trong thẻ <xsd:complexType>.

VÍ DỤ Kiểu về tập hợp các nhan đề sách: <xsd:complexType name=“booksType”> <xsd:sequence>

<xsd:element minOccurs=“0” maxOccurs=“unbounded” name=“title” type=/,xsd: string”/>

</xsd:sequence> </xsd:complexType>

Một phần của tài liệu Tiêu chuẩn Quốc gia TCVN 11523-2:2016 (Trang 41 - 44)