Chuyên đề 1: TÌM HIỂU VỀ XML
Chương 4
Lược đồ XML (XML Schema)
Trường Đại học Nha Trang
Khoa Công nghệ Thông tin
Nội dung
XML Schema là gì?
Khai báo phần tử trong XML Schema
Tham chiếu đến một XML Schema
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
2
XML Schema Definition
(XSD)
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
3
XML Schema
XML Schema mô tả cấu trúc của tài liệu
XML, thay thế cho DTD
XML Schema mô tả:
Các phần tử và thuộc tính trong tài liệu XML
Thứ tự và số lượng các phần tử con
Các kiểu dữ liệu của phần tử và thuộc tính
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
4
Lí do sử dụng XML Schema
XML Schema là một sự thay thế cho DTD
Hỗ trợ nhiều loại dữ liệu
Sử dụng cú pháp XML
Bảo toàn sự giao tiếp dữ liệu
Ràng buộc khóa và tham chiếu mạnh hơn
DTD
Tích hợp với namespace
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
5
Ví dụ
<?xml version="1.0"?>
<xs:schema xmlns:xs=“ />targetNamespace=“”
xmlns=“”
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
6
Schema và namespace
<schema xmlns= />targetNamespace=“ />…..
</schema>
/>namespace của các từ khóa dùng trong sự xác
định lược đồ XML, ví dụ: schema,
targetNamespace,…
targetNamespace: định nghĩa namespace của
lược đồ được xác định trong tài liệu
<schema>…</schema> trên
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
7
Tham chiếu đến một XML
Schema
<?xml version="1.0"?>
xmlns=
xmlns:xsi= />xsi:schemaLocation=" note.xsd">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
xsi:schemaLocation nghĩa là lược đồ của namespace
được tìm thấy ở
note.xsd
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm 8
Xây dựng lược đồ từ nhiều
thành phần
<schema xmlns= />targetNamespace=“ /><include schemaLocation=“ /><include schemaLocation=“ /><include schemaLocation=“ />….
</schema>
<include>: giống như #include trong ngôn ngữ C
schemaLocation: cho biết nơi để lấy thông tin
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
9
Khai báo phần tử trong XML
Schema
Phần tử <schema> là phần tử gốc trong
các tài liệu XML Schema
<?xml version="1.0"?>
/>targetNamespace=
xmlns=
elementFormDefault="qualified">
......
</xs:schema>
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
10
Khai báo phần tử trong XSD
xmlns:xs=" /> Phần tử và loại dữ liệu trong lược đồ được khai báo trong namespace
và có tiền tố là xs
targetNamespace=
Các phần tử được định nghĩa trong lược đồ đến từ namespace
xmlns=""
namespace mặc định là xmlns=""
elementFormDefault="qualified“
Bất kỳ phần tử nào được sử dụng trong tài liệu XML phải từ
namespace đảm bảo chất lượng
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
11
Khai báo phần tử trong XSD
Các kiểu phần tử:
Kiểu giản đơn (Simple element): là một
phần tử XML chỉ có kiểu dữ liệu text, mà
không có thuộc tính hoặc không thể chứa
các phần tử khác
Kiểu text có thể có nhiều loại
Kiểu phức hợp (Complex element): là một
phần tử XML có thuộc tính, hoặc chứa các
phần tử con khác
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
12
Khai báo phần tử kiểu giản
đơn
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
13
Kiểu giản đơn
Kiểu giản đơn (Simple element):
Là một phần tử XML chỉ có kiểu dữ liệu text, mà
không có thuộc tính hoặc không thể chứa các phần
tử khác
Kiểu text có thể có nhiều loại khác nhau:
Built-in data type
User-defined data type
Người dùng có thể thêm ràng buộc cho kiểu dữ liệu
để giới hạn nội dung của nó, hoặc yêu cầu dữ liệu
thỏa mãn một mẫu nào đó
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
14
Định nghĩa một phần tử giản
đơn
<xs:element name="xxx" type="yyy"/>
xxx: tên của phần tử
yyy: kiểu dữ liệu của phần tử
Các kiểu dữ liệu thông dụng:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
15
Ví dụ
XML elements:
<lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>
Simple element definition:
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
16
Giá trị mặc định và cố định
Giá trị mặc định (default value):
<xs:element name="color" type="xs:string" default="red"/>
Giá trị cố định (fixed value):
<xs:element name="color" type="xs:string" fixed="red"/>
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
17
Khai báo thuộc tính trong
XSD
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
18
Thuộc tính trong XSD
Thuộc tính được khai báo như một kiểu giản
đơn
Các phần tử giản đơn không thể có thuộc tính.
Nếu một phần tử có thuộc tính, thì phần tử đó
được xem là phần tử phức hợp
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
19
Khai báo thuộc tính
<xs:attribute name="xxx" type="yyy"/>
xxx: tên của thuộc tính
yyy: kiểu dữ liệu của thuộc tính. Các kiểu dữ liệu
thông dụng:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
20
Ví dụ
Phần tử XML có thuộc tính:
<lastname lang="EN">Smith</lastname>
Định nghĩa thuộc tính trong XSD:
<xs:attribute name="lang" type="xs:string"/>
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
21
Khai báo loại thuộc tính
Khai báo default:
<xs:attribute name="lang" type="xs:string" default="EN"/>
Khai báo fixed:
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
Khai báo required:
<xs:attribute name="lang" type="xs:string" use="required"/>
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
22
Các loại ràng buộc
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
23
Ràng buộc nội dung
Khi một phần tử hay thuộc tính đã định
nghĩa kiểu dữ liệu, phần tử hay thuộc
tính đó đã có ràng buộc về nội dung
Người dùng có thể thêm các ràng buộc
cho phần tử hay thuộc tính, gọi là (facet)
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
24
Ràng buộc giá trị
<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>
Lê Thị Bích Hằng - Bộ môn Kỹ thuật phần mềm
Kiểu miền con
25