Các thuộc tính của XSD

Tất cả các thuộc tính đều được khai báo dưới dạng loại đơn giản.

Thuộc tính là gì?

Các phần tử đơn giản không thể có thuộc tính. Nếu một phần tử có thuộc tính, nó sẽ được coi là một loại phức hợp. Tuy nhiên, thuộc tính luôn được khai báo dưới dạng loại đơn giản.

Làm thế nào để khai báo thuộc tính?

Cách định nghĩa ngữ pháp thuộc tính là:

<xs:attribute name="xxx" type="yyy"/>

Ở đây, xxx là tên thuộc tính, yyy quy định loại dữ liệu của thuộc tính. XML Schema có rất nhiều loại dữ liệu nội bộ.

Loại phổ biến nhất là:

  • xs:string
  • xs:decimal
  • xs:integer
  • xs:boolean
  • xs:date
  • xs:time

Mô hình

Đây là phần tử XML có thuộc tính:

<lastname lang="EN">Smith</lastname>

Đây là định nghĩa thuộc tính tương ứng:

<xs:attribute name="lang" type="xs:string"/>

Giá trị mặc định và cố định của thuộc tính

Thuộc tính có thể có giá trị mặc định hoặc cố định được chỉ định.

Khi không có giá trị nào khác được quy định, giá trị mặc định sẽ được phân phối tự động cho phần tử.

Trong ví dụ dưới đây, giá trị mặc định là "EN":

<xs:attribute name="lang" type="xs:string" default="EN"/>

Giá trị cố định cũng sẽ được phân phối tự động cho phần tử, và bạn không thể quy định giá trị khác.

Trong ví dụ dưới đây, giá trị cố định là "EN":

<xs:attribute name="lang" type="xs:string" fixed="EN"/>

Thuộc tính tùy chọn và bắt buộc

Trong trường hợp mặc định, thuộc tính là tùy chọn. Nếu cần quy định thuộc tính là bắt buộc, hãy sử dụng thuộc tính "use":

<xs:attribute name="lang" type="xs:string" use="required"/>

Giới hạn nội dung

Khi phần tử hoặc thuộc tính XML có loại dữ liệu đã được định nghĩa, các giới hạn sẽ được thêm vào nội dung của phần tử hoặc thuộc tính.

Nếu loại của phần tử XML là "xs:date" và nội dung của nó là chuỗi như "Hello World", phần tử sẽ không được (đánh giá) hợp lệ.

Bằng cách sử dụng XML schema, bạn cũng có thể thêm các giới hạn của riêng mình vào các phần tử và thuộc tính XML của mình. Các giới hạn này được gọi là facet (ghi chú của biên tập viên: có nghĩa là (đa diện体的) mặt, có thể dịch là giới hạn). Bạn sẽ tìm hiểu thêm về facet trong phần tiếp theo.