XML: Bài 4.2. Khám phá các lược đồ XML
Trong bài học thứ hai này, Khám phá các lược đồ XML, bạn sẽ học cách:
- Liệt kê các kiểu dữ liệu được các lược đồ hỗ trợ.
- Giải thích từ vựng của Lược đồ XML.
4.2.1. Các kiểu dữ liệu được hỗ trợ bởi lược đồ
Lược đồ XML mô tả một số kiểu dữ liệu dựng sẵn, có thể được sử dụng để chỉ định và xác thực kiểu dữ liệu dự định của nội dung. Nó cũng cho phép người dùng tạo kiểu dữ liệu do người dùng xác định bằng cách mở rộng các kiểu dữ liệu tích hợp bằng cách sử dụng các facet. Do đó, đề xuất Lược đồ XML xác định hai loại kiểu dữ liệu, đó là:
- Các kiểu dữ liệu dựng sẵn, có sẵn cho tất cả các tác giả của Lược đồ XML và phải được thực thi bởi một bộ xử lý phù hợp.
- Các kiểu dữ liệu do người dùng tạo ra, được xác định trong các trường hợp lược đồ riêng lẻ và dành riêng cho lược đồ đó (mặc dù có thể đưa các định nghĩa này vào các định nghĩa khác).
Trong lược đồ XML, các kiểu dữ liệu có thể được phân loại rộng rãi thành các kiểu dựng sẵn và kiểu dẫn xuất.
Các kiểu dữ liệu tích hợp được chỉ định bởi nhóm làm việc XML là:
Ø string
Một nhóm các ký tự được gọi là một chuỗi. Kiểu dữ liệu chuỗi có thể chứa các ký tự, nguồn cấp dòng, dấu xuống dòng và các ký tự tab. Chuỗi cũng có thể bao gồm sự kết hợp của các ký tự Unicode. Unicode là một tiêu chuẩn chung để mô tả tất cả các ký tự có thể có của tất cả các ngôn ngữ với một thư viện các ký hiệu với một số duy nhất cho mỗi ký hiệu.
Cú pháp:
<xs: element name = "element_name" type = "xs: string" />
Ví dụ:
Khai báo string trong lược đồ là:
<xs:element name="Customer" type="xs:string"/>
Một phần tử trong tài liệu xml sẽ là:
<Customer>John Smith</Customer>
Ø boolean
Kiểu dữ liệu boolean được sử dụng để chỉ định một biểu diễn toán học. Giá trị hợp lệ cho kiểu dữ liệu boolean là true và false. true có thể được thay thế bằng giá trị số 1 và false có thể được thay thế bằng giá trị 0.
Cú pháp:
<xs: property name = "property_name" type = "xs: boolean" />
Ví dụ:
Khai báo boolean trong lược đồ là:
<xs:attribute name="Disabled" type="xs:boolean"/>
Một phần tử trong tài liệu xml sẽ là:
<Status Disabled="true">OFF</Status>
Ø numeric
Kiểu dữ liệu số đại diện cho một giá trị số. Nó bao gồm các số như số nguyên và số thực.
Cú pháp:
<xs:element name="element_name" type="xs:numeric"/>
Ví dụ:
Khai báo số trong lược đồ là:
<xs:element name="Price" type="xs:numeric"/>
Một phần tử trong tài liệu xml sẽ là:
<Price>500</Price>
Ø dateTime
Nó đại diện cho một thời gian cụ thể vào một ngày nhất định, được viết dưới dạng một chuỗi. Ví dụ: "2001-05- 10T12: 35: 40" có thể được coi là một chuỗi dateTime. Ngày được chỉ định ở dạng sau "YYYY-MM-DDThh: mm: ss":
trong đó,
YYYY cho biết năm,
MM cho biết tháng,
DD cho biết ngày,
T cho biết thời gian bắt đầu,
hh chỉ giờ,
mm chỉ phút,
ss chỉ giây.
Cú pháp:
<xs:element name="element_name" type="xs:dateTime"/>
Ví dụ:
Khai báo datetime trong lược đồ là:
<xs:element name="BeginAt" type="xs:dateTime"/>
Một phần tử trong tài liệu xml sẽ là:
<start>2020-09-10T12:35:40</start>
Ø binary
Loại nhị phân có thể bao gồm các tệp đồ họa, chương trình thực thi hoặc bất kỳ chuỗi dữ liệu nhị phân nào khác. Các kiểu dữ liệu nhị phân được sử dụng để thể hiện dữ liệu được định dạng nhị phân gồm hai loại như base64Binary (dữ liệu nhị phân được mã hóa dựa trên Base64) và hexBinary (dữ liệu nhị phân được mã hóa theo hệ thập lục phân).
Cú pháp:
<xs:element name="image_name" type="xs:hexBinary"/>
Ví dụ:
<xs:element name="Logo" type="xs:hexBinary"/>
Ø anyURI
Mã định danh tài nguyên chung (URI) đại diện cho tên tệp hoặc vị trí của tệp.
Cú pháp:
<xs:attribute name="image_name" type="xs:anyURI"/>
Ví dụ:
Khai báo anyURI trong lược đồ là:
<xs:attribute name="flower" type="xs:anyURI"/>
Một phần tử trong tài liệu xml sẽ là:
<image flower="http://www.creativepictures.com/gallery/flower.gif" />
Lưu ý: Ký tự Unicode có kích thước là 2 Byte.
4.2.2. Các kiểu dữ liệu bổ sung
Các kiểu dữ liệu bổ sung có nguồn gốc từ các kiểu dữ liệu tích hợp cơ bản, được gọi là kiểu dữ liệu kiểu cơ sở.
Các kiểu dữ liệu được tạo hoặc dẫn xuất, được hỗ trợ bởi lược đồ XML bao gồm:
Ø integer
Kiểu cơ sở cho số nguyên là kiểu dữ liệu số. Nó bao gồm cả số dương và số âm. Ví dụ, các số -2, -1, 0, 1, 2 là các số nguyên. Kiểu dữ liệu số nguyên được sử dụng để chỉ định một giá trị số mà không có thành phần phân số.
Cú pháp:
<xs:element name="element_name" type="xs:integer"/>
Ví dụ:
Khai báo số nguyên trong lược đồ là:
<xs:element name="Age" type="xs:integer"/>
Một phần tử trong tài liệu xml sẽ là:
<Age>999</Age>
Ø decimal
Nó có thể đại diện cho các phần phân số chính xác chẳng hạn như 3.26. Kiểu cơ sở cho số thập phân là kiểu dữ liệu số. Kiểu dữ liệu thập phân được sử dụng để chỉ định một giá trị số.
Cú pháp:
<xs:element name="element_name" type="xs:decimal"/>
Ví dụ:
Khai báo thập phân trong lược đồ là:
<xs:element name="Weight" type="xs:decimal"/>
Một phần tử trong tài liệu xml sẽ là:
<prize>+70.7860</prize>
Ø time
Kiểu cơ sở là kiểu dữ liệu dateTime. Biểu diễn mặc định là 16:35:26. Kiểu dữ liệu thời gian được sử dụng để chỉ định thời gian. Thời gian được chỉ định ở dạng sau "hh: mm: ss" trong đó, hh là giờ, mm chỉ phút và ss chỉ giây.
Cú pháp:
<xs:element name="element_name" type="xs:time"/>
Ví dụ:
Khai báo thập phân trong lược đồ là:
<xs:element name="BeginAt" type="xs:time"/>
Một phần tử trong tài liệu xml sẽ là:
<BeginAt>09:30:10.5</BeginAt>
4.2.3. Từ vựng lược đồ
Tạo một lược đồ sử dụng từ vựng lược đồ XML giống như tạo bất kỳ tài liệu XML nào khác bằng cách sử dụng từ vựng chuyên ngành. Để hiểu từ vựng của Lược đồ XML và các phần tử, ví dụ thảo luận về một tài liệu XML sẽ được xác thực dựa trên một lược đồ.
Hình 4.5 mô tả khai báo lược đồ.
Hình 4.5: Khai báo lược đồ
Giải thích cho các vùng được đánh dấu trong hình ảnh:xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema"
Mọi Lược đồ XML đều bắt đầu bằng phần tử gốc <schema>. Đoạn mã trong ảnh trên chỉ ra rằng các phần tử và kiểu dữ liệu được sử dụng trong lược đồ có nguồn gốc từ không gian tên "http://www.w3.org/2001/XMLSchema" và có tiền tố là xs.
targetNamespace = "http: //www.abc.com"
Nó chỉ định rằng các phần tử được định nghĩa trong tài liệu XML tham chiếu đến lược đồ này, đến từ không gian tên "http://www.abc.com".
xmlns = "http: //www.abc.com"
Dòng mã này trỏ đến "http://www.abc.com" làm không gian tên mặc định.
elementFormDefault = "qualified"
Nó chỉ ra rằng các phần tử được sử dụng bởi tài liệu cá thể XML đã được khai báo trong lược đồ này cần có không gian tên đủ điều kiện.
Hình 4.6 minh họa việc sử dụng khai báo lược đồ.
Hình 4.6: Sử dụng khai báo lược đồ
Giải thích cho các vùng được đánh dấu trong hình ảnh:
xmlns = "http://www.abc.com"
Nó chỉ ra khai báo không gian tên mặc định. Khai báo này thông báo cho trình xác thực lược đồ rằng tất cả các phần tử được sử dụng trong tài liệu XML này được khai báo trong không gian tên ("http://www.abc.com ") mặc định.
xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
Đây là không gian tên phiên bản có sẵn cho lược đồ XML.
xsi:schemaLocation = "http://www.abc.com mail.xsd">
Thuộc tính schemaLocation này có hai giá trị. Giá trị đầu tiên xác định không gian tên. Thư hai giá trị là vị trí của lược đồ XML nơi nó được lưu trữ.
Kiểm tra kiến thức bài 4.2
1. Bạn có thể đối sánh dữ liệu xml với kiểu dữ liệu tương ứng của chúng không?
Mô tả |
Đặc điểm |
||
(A) |
<prize disabled="true">999</prize> |
(1) |
dateTime |
(B) |
<img src="http://www.abc.com/images/flowers.gif"/> |
(2) |
boolean |
(C) |
<start>09:30:10.5</start> |
(3) |
decimal |
(D) |
<start>2002-09-24</start> |
(4) |
time |
(E) |
<prize>+999.5450</prize> |
(5) |
anyURI |
2. Dưới đây là một ví dụ của tài liệu XML tham chiếu đến một lược đồ XML. Bạn có thể sắp xếp tệp XML theo thứ tự thích hợp bằng cách sử dụng từ vựng lược đồ không?
(1) |
<heading>Scheduler</heading> <body>3rd March Monday, 7:30 PM: board meeting!</body> |
(2) |
<to>John</to> <from>Jordan</from> |
(3) |
</mail> |
(4) |
<?xml version="1.0"?> <mail xmlns="http://www.abc.com" |
(5) |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abc.com mail.xsd"> |