XML - Các lược đồ

Lược đồ XML thường được gọi là XML Schema Definition (XSD). Nó được sử dụng để mô tả và xác thực cấu trúc và nội dung của dữ liệu XML. Lược đồ XML xác định các phần tử, thuộc tính và kiểu dữ liệu. Phần tử lược đồ hỗ trợ Không gian tên. Nó tương tự như một lược đồ cơ sở dữ liệu mô tả dữ liệu trong cơ sở dữ liệu.

Cú pháp

Bạn cần khai báo một lược đồ trong tài liệu XML của mình như sau:

Thí dụ

Ví dụ sau đây cho thấy cách sử dụng lược đồ:

<?xml version = "1.0" encoding = "UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
   <xs:element name = "contact">
      <xs:complexType>
         <xs:sequence>
            <xs:element name = "name" type = "xs:string" />
            <xs:element name = "company" type = "xs:string" />
            <xs:element name = "phone" type = "xs:int" />
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

Ý tưởng cơ bản đằng sau các Lược đồ XML là chúng mô tả định dạng hợp pháp mà một tài liệu XML có thể sử dụng.

Thành phần

Như chúng ta đã thấy trong chương XML - Phần tử , các phần tử là các khối xây dựng của tài liệu XML. Một phần tử có thể được xác định trong XSD như sau:

<xs:element name = "x" type = "y"/>

Các loại định nghĩa

Bạn có thể xác định các phần tử lược đồ XML theo những cách sau:

Loại đơn giản

Phần tử kiểu đơn giản chỉ được sử dụng trong ngữ cảnh của văn bản. Một số kiểu đơn giản được xác định trước là: xs: integer, xs: boolean, xs: string, xs: date. Ví dụ -

<xs:element name = "phone_number" type = "xs:int" />

Loại phức tạp

Một kiểu phức hợp là một vùng chứa cho các định nghĩa phần tử khác. Điều này cho phép bạn chỉ định phần tử con nào mà một phần tử có thể chứa và cung cấp một số cấu trúc trong tài liệu XML của bạn. Ví dụ -

<xs:element name = "Address">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
         <xs:element name = "phone" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Trong ví dụ trên, phần tử Địa chỉ bao gồm các phần tử con. Đây là một thùng chứa cho khác<xs:element> định nghĩa, cho phép xây dựng một hệ thống phân cấp đơn giản của các phần tử trong tài liệu XML.

Các loại toàn cầu

Với kiểu toàn cục, bạn có thể xác định một kiểu duy nhất trong tài liệu của mình, kiểu này có thể được sử dụng bởi tất cả các tham chiếu khác. Ví dụ: giả sử bạn muốn tổng quát ngườicông ty cho các địa chỉ khác nhau của công ty. Trong trường hợp này, bạn có thể xác định một kiểu chung như sau:

<xs:element name = "AddressType">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "name" type = "xs:string" />
         <xs:element name = "company" type = "xs:string" />
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Bây giờ chúng ta hãy sử dụng kiểu này trong ví dụ của chúng ta như sau:

<xs:element name = "Address1">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone1" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element> 

<xs:element name = "Address2">
   <xs:complexType>
      <xs:sequence>
         <xs:element name = "address" type = "AddressType" />
         <xs:element name = "phone2" type = "xs:int" /> 
      </xs:sequence> 
   </xs:complexType>
</xs:element>

Thay vì phải xác định tên và công ty hai lần (một lần cho Address1 và một lần cho Address2 ), giờ đây chúng ta có một định nghĩa duy nhất. Điều này làm cho việc bảo trì đơn giản hơn, tức là, nếu bạn quyết định thêm các phần tử "Mã bưu điện" vào địa chỉ, bạn chỉ cần thêm chúng tại một nơi.

Thuộc tính

Các thuộc tính trong XSD cung cấp thêm thông tin bên trong một phần tử. Các thuộc tính có thuộc tính tênloại như hình dưới đây -

<xs:attribute name = "x" type = "y"/>