1. Trang chủ
  2. » Tất cả

Bài giảng chuyên đề công nghệ xml và ứng dụng phần 2 trường đh công nghiệp quảng ninh

20 1 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Bài giảng chuyên đề công nghệ xml và ứng dụng phần 2
Trường học Trường Đại học Công nghiệp Quảng Ninh
Chuyên ngành Công nghệ Thông tin
Thể loại Bài giảng
Thành phố Quảng Ninh
Định dạng
Số trang 20
Dung lượng 399,87 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu giảng dạy môn Chuyên đề Công nghệ XML và Ứng dụng 54 Chương 5 LƯỢC ĐỒ XML  Mục tiêu học tập Sau khi học xong chương này người học sẽ Hiểu được lược đồ XML là gì, lược đồ theo chuẩn W3C Định[.]

Trang 1

Chương 5

LƯỢC ĐỒ XML

 Mục tiêu học tập: Sau khi học xong chương này người học sẽ:

- Hiểu được lược đồ XML là gì, lược đồ theo chuẩn W3C

- Định nghĩa được kiểu dữ liệu cho các phần tử trong lược đồ (kiểu đơn giản

và kiểu phức hợp)

- Ứng dụng được lược đồ vào tài liệu XML

Tóm tắt chương

Để tài liệu XML của chúng ta hợp lệ, chúng ta phải định nghĩa kiểu tư liệu cho các phần tử Chúng ta có thể sử dụng khai báo DTD cho mục đích này, tuy nhiên DTD

không phải là cách duy nhất Định nghĩa kiểu tư liệu còn có thể dựa vào lược đồ

(schema) Chương này chúng ta sẽ tìm hiểu khái niệm và cách sử dụng lược đồ để khai

báo kiểu tư liệu cho các phần tử thay cho định nghĩa DTD

5.1 Tại sao chúng ta nên dùng XML Schema?

Xuất phát từ những hạn chế của DTD như: DTD sử dụng cú pháp khác so với

cú pháp dùng trong trang XML làm cho người dùng phải nhớ nhiều cú pháp; DTD chỉ

hỗ trợ được 10 kiểu dữ liệu Ngoài ra DTD còn hạn chế về khả năng định nghĩa các

ràng buộc dữ liệu

- XML Schema sử dụng cùng cú pháp với trang XML làm cho người dùng dễ

nhớ ngoài ra nó còn hỗ trợ được 44 kiểu dữ liệu XML schema cho phép người dùng

tự định nghĩa kiểu dữ liệu mới, định nghĩa các ràng buộc dữ liệu XML schema bảo

toàn sự giao tiếp dữ liệu, ràng buộc các khóa và tham chiếu mạnh hơn so với DTD

đồng thời nó còn tích hợp được với không gian tên (namespace)

- 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

5.2 Các thành phần trong một XML Schema

Trong một XML Schema có các thành phần sau:

- Thành phần schema

- Element

Trang 2

- Các thuộc tính có thể xuất hiện trong trang XML

- Định nghĩa các kiểu dữ liệu

5.2.1 Thành phần schema

Điểm cơ bản nhất để hiểu về lược đồ XML là hiểu khái niệm sử dụng kiểu đơn giản và kiểu phức hợp trong khai báo kiểu cho các phần tử XML

Để chỉ định kiểu cho các phần tử, chúng ta phải bảo đảm kiểu đã được định nghĩa trước đó Như đã nêu trên, kiểu phức hợp là kiểu chứa các phần tử con trong nó

hoặc chứa thêm thuộc tính trong khi kiểu giản đơn thì không Kiểu giản đơn là kiểu

nội tại đã được định nghĩa sẵn và chúng ta có thể dùng tự do trong lược đồ XML

Schema là phần tử gốc (element root) của mỗi trang tài liệu

- Khai báo:

<xsd:schema

xmlns:xsd=http://www.w3.org/2001/XMLSchema

targetNamespace=http://www.books.org xmlns=http://www.books.org

elementFormDefault=“qualifed”>

<! nội dung của schema >

</xsd:schema>

Mỗi XML Schema được bắt đầu bằng thành phần (element root)

<xsd:schema

xmlns:xsd=http://www.w3.org/2001/XMLSchema version=“1.0”>

- Các thành phần và các kiểu dữ liệu trong schema như:

- schema, element, complexType, sequence, string nằm trong namespace:

http:// /XML schema

- targetNamespace=http://www.books.org namespace của những thành phần định nghĩa trong schema

- Ví dụ như Book, Title, Author, date, ISBN, Publisher nằm trong http://www.books.org namespace

elementFormDefault=“qualified” kiểm tra tính hợp lệ của tất cả các elements trong

trang XML

elementFormDefault=“unqualified” chỉ kiểm tra tính hợp lệ của các global element

Trang 3

* Chú ý:

- Thuộc tính targetNamespace là một tùy chọn có thể không cần chỉ ra

targetNamespace cho một schema

5.2.2 Tham chiếu đến schema từ trang XML

<?xml version =“1.0”?>

<BookStore xmlns=http://www.books.org xmlns:xsl=http://www.w3.org/2001/XMLschema-instance

<book> xsl:schemaLocation=:http://www.books.org BookStore.xsd”

<title>My life and Times</title>

<author>Paul MeCartney</author>

<date>July, 1998</date>

<ISBN>94303-12021-43892</ISBN>

<puplisher>MeMilin Puplishing</puplisher>

</book>

</BookStore>

- Khai báo namespace mặc định, thông báo cho schema- validator biết tất cả các

thành phần khai báo trong trang XML là có trong http://www.books.org namespace

- Thông báo cho schema-validator biết rằng thuộc tính schemaLocation là nằm

trong XMLschema-instance namespce

- Với schemaLocation thông báo cho schema - validator biết rằng

http://www.books.org namespace là được định nghĩa trong BookStore.xsd

5.3 Quá trình kiểm tra tính hợp lệ của một trang XML

Đầu tiên trình duyệt sẽ kiểm tra tính hợp lệ của dữ liệu trong trang XML trước, căn cứ vào cấu trúc dữ liệu khai báo trong trang BookStore.xsd Sau đó tiếp tục kiểm

tra tính hợp lệ của trang BookStore.xsd, căn cứ vào các luật mô tả trong

XMLSchema.xsd

Trang 4

Ví dụ:

<?xml version="1.0"?>

<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”

targetNamespace=“http://www.w3schools.com”

xmlns=“http://www.w3schools.com”

elementFormDefault="qualified">

<xsd:element name="note">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="to" type="xsd:string"/>

<xsd:element name="from" type="xsd:string"/>

<xsd:element name="heading" type="xsd:string"/>

<xsd:element name="body" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:schema>

5.4 Lược đồ và không gian tên

<schema xmlns=http://www.w3.org/2001/XMLSchema

targetNamespace=“http://www.w3schools.com”>

</schema>

- http://www.w3.org/2001/XMLSchema: 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

5.5 Xây dựng lược đồ từ nhiều thành phần

<schema xmlns=http://www.w3.org/2001/XMLSchema

targetNamespace=“http://xyz.edu/Admin”>

<include schemaLocation=“http://xyz.edu/StudentTypes.xsd”>

<include schemaLocation=“http://xyz.edu/ClassTypes.xsd”>

<include schemaLocation=“http://xyz.edu/CourseTypes.xsd”>

</schema>

<include>: giống như #include trong ngôn ngữ C schemaLocation: cho biết nơi để lấy thông tin

Trang 5

5.6 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"?>

<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema

targetNamespace=http://www.w3schools.com

xmlns=http://www.w3schools.com

elementFormDefault="qualified">

</xsd:schema>

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

Phần tử và loại dữ liệu trong lược đồ được khai báo trong namespace http://www.w3.org/2001/XMLSchema và có tiền tố là xsd

targetNamespace=http://www.w3schools.com

Các phần tử được định nghĩa trong lược đồ từ namespace http://www.w3schools.com xmlns="http://www.w3schools.com"

namespace mặc định là xmlns="http://www.w3schools.com"

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

5.7 Các kiểu phần tử

- Kiểu giản đơn (Simple type): 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ũng có thể có

nhiều loại:

+ 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 đó

- Kiểu phức hợp (Complex type): là một phần tử XML có thuộc tính, hoặc chứa

các phần tử con khác

5.7.1 Định nghĩa một phần tử giản đơn

<xsd:element name="xxx" type="yyy"/>

xxx: tên của phần tử yyy: kiểu dữ liệu của phần tử

Trang 6

5.7.2 Các kiểu dữ liệu thông dụng:

Binary

Boolean

Byte

Century

Date

Decemal

Double

ENTITY

ENTITIES

ID

Int, Integer

IDREF

NOTATION

MNTOKEN

MNTOKENS

Month

String

Kiểu dữ liệu nhị phân Kiểu luận lý

Kiểu byte Kiểu thế kỷ Kiểu ngày Kiểu thập phân Kiểu số thực 64bit Kiểu thực thể Kiểu đa thực thể Kiểu định danh Kiểu số nguyên Kiểu tham chiếu định danh Kiểu ghi chú

Kiểu token đơn Kiểu đa token Kiểu tháng Kiểu chuỗi

5.7.3 Ví dụ

Các phần tử XML:

<lastname>Refsnes</lastname>

<age>36</age>

<dateborn>1970-03-27</dateborn>

Định nghĩa phần tử đơn giản:

<name="lastname" type="xsd:string"/>

<name="age" type="xsd:integer"/>

<name="dateborn" type="xsd:date"/>

5.8 Giá trị mặc định và cố định

Giá trị mặc định:

<xsd:element name="color" type="xsd:string" default="red"/>

Trang 7

Giá trị cố định:

<xsd:element name="color" type="xsd:string" fixed="red"/>

Trong đó:

Thuộc tính trong XSD đượ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

5.9 Khai báo thuộc tính và các ràng buộc

<xsd: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

Ví dụ:

Phần tử XML có thuộc tính:

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

5.9.1 Định nghĩa thuộc tính trong XSD

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

5.9.2 Khai báo loại thuộc tính

Khai báo default:

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

Khai báo fixed:

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

Khai báo requyred:

<xsd:attribute name="lang" type="xsd:string" use="requyred"/>

5.9.3 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

5.9.4 Ràng buộc giá trị

Kiểu miền con:

<xsd:element name="age">

<xsd:simpleType>

Trang 8

<xsd:restriction base="xsd:integer">

<xsd:minInclusive value="0"/>

<xsd:maxInclusive value="120"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

Kiểu liệt kê:

<xsd:element name="car">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:enumeration value="Audi"/>

<xsd:enumeration value="Golf"/>

<xsd:enumeration value="BMW"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

Giới hạn giá trị:

<xsd:element name="letter">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:pattern value="[a-z]"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

Hoặc:

<xsd:element name="initials">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

Hoặc dùng ký tự đại diện:

<xsd:element name="letter">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

Trang 9

<xsd:pattern value="([a-z])*"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

<xsd:element name="letter">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:pattern value="([a-z][A-Z])+"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

<xsd:element name="gender">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:pattern value="male|female"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

<xsd:element name="password">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:pattern value="[a-zA-Z0-9]{8}"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

5.9.5 Ràng buộc về ký tự dấu cách

<xsd:element name="address">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:whiteSpace value="preserve"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

Trang 10

<xsd:whiteSpace value="preserve"/>: XML parser sẽ không loại bỏ bất kỳ ký

tự dấu cách nào

<xsd:whiteSpace value=“replace"/>: XML parser sẽ thay thế tất cả ký tự dấu cách (line feed, tab, space, carriage return) bằng khoảng trắng

<xsd:whiteSpace value=“collapse"/>: XML parser sẽ loại bỏ tất cả ký tự dấu cách dư (line feed, tab, space, carriage return) bằng khoảng trắng

5.9.6 Ràng buộc về độ dài

<xsd:element name="password">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:length value="8"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

Hoặc:

<xsd:element name="password">

<xsd:simpleType>

<xsd:restriction base="xsd:string">

<xsd:minLength value="5"/>

<xsd:maxLength value="8"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

5.9.7 Định nghĩa phần tử phức hợp

Phần tử phức hợp là một phần tử XML chứa các phần tử khác hoặc có thuộc tính

Có 4 loại phần tử phức hợp:

- Phần tử rỗng

- Phần tử chỉ chứa các phần tử khác

- Phần tử chỉ chứa văn bản

- Phần tử vừa chứa các phần tử khác, vừa chứa văn bản

Ví dụ:

<product pid="1345"/>

<employee>

<firstname>John</firstname>

Trang 11

<lastname>Smith</lastname>

</employee>

<food type="dessert">Ice cream</food>

<description>

It happened on <date lang="norwegian">03.03.99</date>

</description>

5.9.7.1 Định nghĩa một phần tử phức hợp trong XSD

Trong tài liệu XML

<employee>

<firstname>John</firstname>

<lastname>Smith</lastname>

</employee>

Có nhiều cách để định nghĩa phần tử employee…

Cách 1:

<xsd:element name="employee">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="firstname" type="xsd:string"/>

<xsd:element name="lastname" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

Cách 2:

<xsd:element name="employee" type="personinfo"/>

<xsd:complexType name="personinfo">

<xsd:sequence>

<xsd:element name="firstname" type="xsd:string"/>

<xsd:element name="lastname" type="xsd:string"/>

</xsd:sequence>

</xsd:complexType>

5.9.7.2 Định nghĩa phần tử rỗng

<product prodid="1345" />

<xsd:element name="product">

Ngày đăng: 27/02/2023, 18:51

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN