document type definition - xml schema

63
XML Schema 1 Giản đồ XML CBGD: Nguyễn Trần Thi Văn NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG CHƯƠNG 07

Upload: cong-thanh-nguyen

Post on 12-Jan-2017

871 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Document Type Definition - xml schema

XML Schema 1

Giản đồ XMLCBGD: Nguyễn Trần Thi

Văn

NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG

CHƯƠNG 07

Page 2: Document Type Definition - xml schema

2

Trình bày được công dụng của XML Schema.

So sánh sự giống và khác nhau giữa XML Schema và DTDs.

Khai báo được cấu trúc của một tài liệu XML sử dụng XML Schema.

Sử dụng được XML Schema để kiểm tra tính hợp lệ của một tài liệu XML.

XML Schema

Page 3: Document Type Definition - xml schema

3XML Schema

Page 4: Document Type Definition - xml schema

XML schemas (schema viết thường) là 1 danh từ chung, mô tả toàn bộ các XML schema.

XML schema là văn bản mô tả về cấu trúc của tài liệu XML.

Hiện có rất nhiều loại ngôn ngữ XML schema.

4XML Schema

Page 5: Document Type Definition - xml schema

Các loại ngôn ngữ XML schema:– Document Content Description facility for XML, an RDF

framework– Document Definition Markup Language (DDML)– Document Schema Definition Languages (DSDL)– Document Structure Description (DSD)– Document Type Definition (DTD)– Namespace Routing Language (NRL)– RELAX NG and its predecessors RELAX and TREX– SGML– Schema for Object-Oriented XML (SOX)– Schematron– XML-Data Reduced (XDR)– XML Schema (WXS or XSD)

5XML Schema

Page 6: Document Type Definition - xml schema

XML Schema là 1 dạng của XML schema, được W3C công bố vào tháng 5/2001.

XML Schema mô tả cấu trúc của 1 tài liệu XML:– Định nghĩa các phần tử và thuộc tính của phần tử

xuất hiện trong tài liệu.– Quy định thứ tự, số lượng của các phần tử con của

một phần tử cha.– Quy định một phần tử là rỗng hoặc chứa văn bản.– Định nghĩa kiểu dữ liệu cho các phần tử và thuộc

tính.– Thiết lập giá trị mặc định và cố định cho các phần tử

và thuộc tính.6XML Schema

Page 7: Document Type Definition - xml schema

7XML Schema

Page 8: Document Type Definition - xml schema

XML Schema hỗ trợ khai báo kiểu dữ liệu cho các phần tử và thuộc tính.

XML Schema sử dụng cú pháp của XML

XML Schema đảm bảo an toàn trong việc truyền dữ liệu.

XML Schema có thể mở rộng được. Một tài liệu XML chỉ có tính hợp chuẩn

(well-formedness) thôi là không đủ.

8XML Schema

Page 9: Document Type Definition - xml schema

Đây là điểm mạnh nhất của XML Schema, nó giúp cho chúng ta dễ dàng hơn trong việc:– Mô tả nội dung tài liệu cho phép– Kiểm tra tính chính xác của dữ liệu– Làm việc với cơ sở dữ liệu– Xác định mô hình dữ liệu (các dạng dữ

liệu)– Chuyển đổi kiểu dữ liệu

9XML Schema

Page 10: Document Type Definition - xml schema

Sau đây là một số lợi ích của việc sử dụng cú pháp XML:– Không cần phải học một ngôn ngữ mới.– Có thể sử dụng các trình soạn thảo XML

để chỉnh sửa các file XML Schema.– Có thể sử dụng bộ phân tích cú pháp của

XML để phân tích cú pháp của tài liệu XML Schema.

10XML Schema

Page 11: Document Type Definition - xml schema

Với cùng một dữ liệu, mỗi người sẽ có cách hiểu khác nhau.

Chẳng hạn, với cùng 1 cách ghi ngày “03/02/2010”, người Việt Nam mình sẽ hiểu là ngày 3 tháng 2 năm 2010 nhưng người Anh sẽ hiểu là ngày 2 tháng 3 năm 2010.

Với XML Schema, chúng ta có thể mô tả kiểu dữ liệu để mọi người có thể hiểu một cách thống nhất, chẳng hạn kiểu dữ liệu ngày ở trên, trong XML Schema quy định sẵn theo kiểu YYYY/MM/DD, tất cả những kiểu ghi khác đều không hợp lệ.

11XML Schema

Page 12: Document Type Definition - xml schema

Với 1 XSD, ta có thể : – Dùng lại schema từ những schema khác.– Tạo kiểu dữ liệu riêng được dẫn xuất từ

kiểu dữ liệu chuẩn.– Tham chiếu nhiều schema trong cùng tài

liệu.

12XML Schema

Page 13: Document Type Definition - xml schema

Một tài liệu XML hợp chuẩn là một tài liệu tuân theo những quy tắc cú pháp của XML

Nhưng cho dù một tài liệu đã hợp chuẩn nhưng nó vẫn có thể có lỗi và những lỗi đó có thể gây nên những hậu quả nghiêm trọng

Với XML Schema, các lỗi này có thể dễ dàng bị các phần mềm kiểm tra lỗi phát hiện.

13XML Schema

Page 14: Document Type Definition - xml schema

14XML Schema

Page 15: Document Type Definition - xml schema

DTD Ra đời rất sớm Cho phép mô tả văn

bản có cấu trúc bất kỳ Không sử dụng cấu

trúc của XML Không hỗ trợ hướng

đối tượng Không hỗ trợ

namespace

XML Schema Đuợc đề xuất bởi W3C Chỉ áp dụng cho tài

liệu XML Sử dụng cấu trúc của

XML Hỗ trợ hướng đối

tượng

Hỗ trợ namespace

15XML Schema

Page 16: Document Type Definition - xml schema

DTD Chỉ cho phép đặc tả một số

“kiểu dữ liệu đơn giản” trong nội dung chính của tài liệu XML

Không cho phép ràng buộc trên miền giá trị

Đặc tả cấu trúc tài liệu XML bao gồm 2 phần : Đặc tả cấu trúc nội dung các thẻ, đặc tả thuộc tính các thẻ

XML Schema Cho phép đặc tả chi tiết về

các “kiểu dữ liệu” đuợc sử dụng trong nội dung chính của tài liệu XML

Cho phép ràng buộc trên miền giá trị

Thông tin về một thẻ được mô tả tập trung qua một ý niệm duy nhất là kiểu

16XML Schema

Page 17: Document Type Definition - xml schema

17XML Schema

Page 18: Document Type Definition - xml schema

Một khai báo Schema thường có dạng như sau:

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"targetNamespace="http://www.w3schools.com"xmlns="http://www.w3schools.com"elementFormDefault="qualified">......</xs:schema>

18XML Schema

Page 19: Document Type Definition - xml schema

Tài liệu XML tham chiếu đến 1 Schema có dạng:

<?xml version="1.0"?><email xmlns="http://www.w3schools.com"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.w3schools.com email.xsd">......</email>

19

Namespace mặc địnhNamespace đối tượng XML Schema

Namespace được sử dụng

Vị trí của XML Schema dùng cho namespace trên

XML Schema

Page 20: Document Type Definition - xml schema

Một phần tử đơn giản là phần tử chỉ chứa văn bản, không chứa các thuộc tính hay các phần tử con.

Văn bản ở đây không có nghĩa là chỉ chứa chuỗi không còn các kiểu dữ liệu khác đã được định nghĩa sẵn (boolean, integer, date, time...) hoặc các kiểu dữ liệu do ta tự định nghĩa.

Ta cũng có thể quy định ràng buộc giá trị cho các kiểu dữ liệu đó.

20XML Schema

Page 21: Document Type Definition - xml schema

Cú pháp:<xs:element name="xxx" type="yyy"/>

• XML schema có nhiều kiểu dữ liệu dựng sẵn . Những kiểu phổ biến nhất là :– xs:string– xs:decimal– xs:integer– xs:boolean– xs:date– xs:time

21

Tên phần tử Kiểu dữ liệu của phần tử

XML Schema

Page 22: Document Type Definition - xml schema

Giá trị mặc định: là giá trị được gán cho phần tử nếu giá trị của phần tử đó không được chỉ rõ.<xs:element name=“xxx" type=“yyy" default=“zzz"/>

Giá trị cố định: là giá trị được gán cố định cho phần tử, không thể thay đổi được.<xs:element name=“xxx" type=“yyy" fixed=“zzz"/>

22XML Schema

Page 23: Document Type Definition - xml schema

Cú pháp:<xs:attribute name="xxx" type="yyy"/>

Kiểu dữ liệu của thuộc tính cũng tương tự như kiểu dữ liệu của phần tử.

23

Tên thuộc tính Kiểu dữ liệu của thuộc tính

XML Schema

Page 24: Document Type Definition - xml schema

Những thuộc tính cũng có giá trị mặc định và cố định, khai báo tương tự như cho các phần tử.<xs:attribute name="lang" type="xs:string" default="EN"/> Thuộc tính lang nếu không ghi gì thì tự động sẽ được gán giá trị là EN.<xs:attribute name="lang" type="xs:string" fixed="EN"/> Thuộc tính lang luôn luôn có giá trị là EN cho dù ta có gán trá trị khác cho nó.

24XML Schema

Page 25: Document Type Definition - xml schema

Mặc định thuộc tính là tùy chọn. Để chỉ rõ thuộc tính là bắt buộc bạn phải dùng thuộc tính use<xs:attribute name="lang" type="xs:string" use="required"/>

Thuộc tính use có 3 giá trị:– optional: thuộc tính là tùy chọn, khi khai báo trong

phần tử thì có cũng được mà không có cũng được.– required: thuộc tính bắt buộc, khi khai báo trong

phần tử bắt buộc phải có.– prohibited: thuộc tính không được dùng.

Thuộc tính use là optional nếu default hay fixed được dùng

25XML Schema

Page 26: Document Type Definition - xml schema

Dùng để định nghĩa những giá trị được gán cho phần tử hay thuộc tính

Những ràng buộc dữ liệu trên tài liệu XML còn được gọi là facet

Ví dụ: Quy định phần tử age có giá trị từ 0 tới 100<xs:element name="age">  <xs:simpleType>    <xs:restriction base="xs:integer">      <xs:minInclusive value="0"/>      <xs:maxInclusive value="100"/>    </xs:restriction>  </xs:simpleType></xs:element>

26

Giá trị nhỏ nhất của phần tử

Giá trị lớn nhất của phần tử

XML Schema

Page 27: Document Type Definition - xml schema

Để giới hạn giá trị của phần tử nằm trong 1 bộ giá trị thì ta dùng ràng buộc enumeration:<xs:element name="car">  <xs:simpleType>    <xs:restriction base="xs:string">      <xs:enumeration value="Audi"/>      <xs:enumeration value="Golf"/>      <xs:enumeration value="BMW"/>    </xs:restriction>  </xs:simpleType></xs:element>

Phần tử car chỉ được phép có 3 giá trị là Audi, Golf, BMW

27XML Schema

Page 28: Document Type Definition - xml schema

<xs:element name="car" type="carType"/><xs:simpleType name="carType">  <xs:restriction base="xs:string">    <xs:enumeration value="Audi"/>    <xs:enumeration value="Golf"/>    <xs:enumeration value="BMW"/>  </xs:restriction></xs:simpleType>

Cách viết này có ý nghĩa tương tự như VD trên nhưng trong trường hợp này, kiểu carType có thể được dùng bởi các phần tử khác vì nó không phải là thành phần của phần tử car

28XML Schema

Page 29: Document Type Definition - xml schema

Để giới hạn nội dung của 1 phần tử để định nghĩa 1 chuỗi những số hay chữ cái mà có thể được dùng , chúng ta sẽ dùng ràng buộc pattern<xs:element name="letter">  <xs:simpleType>    <xs:restriction base="xs:string">      <xs:pattern value="[a-z]"/>    </xs:restriction>  </xs:simpleType></xs:element>

Phần tử letter chỉ được chứa 1 ký tự và là chữ thường

29XML Schema

Page 30: Document Type Definition - xml schema

<xs:element name="initials">  <xs:simpleType>    <xs:restriction base="xs:string">      <xs:pattern value="[A-Z][A-Z][A-Z]"/>    </xs:restriction>  </xs:simpleType></xs:element>

Phần tử initials chỉ được phép có 3 ký tự và là ký tự in hoa.

30XML Schema

Page 31: Document Type Definition - xml schema

<xs:element name="letter">  <xs:simpleType>    <xs:restriction base="xs:string">      <xs:pattern value="([a-z])*"/>    </xs:restriction>  </xs:simpleType></xs:element>

Phần tử letter có ít nhất là 0 ký tự và là chữ thường.

31XML Schema

Page 32: Document Type Definition - xml schema

<xs:element name="letter">  <xs:simpleType>    <xs:restriction base="xs:string">      <xs:pattern value="([a-z][A-Z])+"/>    </xs:restriction>  </xs:simpleType></xs:element>

Phần tử letter được hợp thành từ bộ ký tự 1 chữ thường và 1 chữ hoa bất kỳ và phải có ít nhất 1 bộ ký tự đó. Chẳng hạn sT, sHiN,... là hợp lệ, còn st, ST, shin, SHIN, ShiN hay phần tử rỗng đều không hợp lệ.

32XML Schema

Page 33: Document Type Definition - xml schema

Để quản lý những kí tự không nhìn thấy được, thì chúng ta sẽ dùng ràng buộc whiteSpace

Ràng buộc whiteSpace có 3 giá trị:• preserve: trình xử lý XML sẽ giữ nguyên hiện trạng

của văn bản, không xóa bất kỳ ký tự nào• replace: trình xử lí XML sẽ thay thế tất cả những kí

tự không nhìn thấy được (dòng mới, tab, khoảng trắng và dấu xuống dòng) bằng khoảng trắng

• collapse: trình xử lý XML sẽ thay thế tất cả những kí tự không nhìn thấy được (dòng mới, tab, các khoảng trắng, dấu xuống dòng) bằng khoảng trắng, những khoảng trắng ở đầu và ở cuối sẽ bị xoá, và nhiều khoảng trắng sẽ được giảm thành 1 khoảng trắng)

33XML Schema

Page 34: Document Type Definition - xml schema

Để hạn chế độ dài của 1 giá trị trong 1 phần tử, chúng ta sẽ dùng những ràng buộc length, minLength, maxLength<xs:element name="password">  <xs:simpleType>    <xs:restriction base="xs:string">      <xs:minLength value="5"/>      <xs:maxLength value="8"/>    </xs:restriction>  </xs:simpleType></xs:element>

Phần tử password có độ dài từ 5 đến 8 ký tự

34XML Schema

Page 35: Document Type Definition - xml schema

Ràng buộc Ý nghĩaenumeration Định nghĩa một danh các giá trị cho phépfractionDigits

Xác định số chữ số thập phân tối đa cho phép. Phải lớn hơn hoặc bằng 0

length Xác định chính xác số ký tự hoặc số lượng danh sách phần tử cho phép. Phải lớn hơn hoặc bằng 0

maxExclusive

Xác định giá trị lớn nhất của kiểu số (giá trị của phần tử phải nhỏ hơn giá trị này)

maxInclusive Xác định giá trị lớn nhất của kiểu số (giá trị của phần tử phải nhỏ hơn hoặc bằng giá trị này)

maxLength Xác định số ký tự hoặc số lượng danh sách phần tử tối đa cho phép. Phải lớn hơn hoặc bằng 0

35XML Schema

Page 36: Document Type Definition - xml schema

Ràng buộc Ý nghĩaminExclusive Xác định giá trị nhỏ nhất của kiểu số (giá trị của

phần tử phải lớn hơn giá trị này)minInclusive Xác định giá trị nhỏ nhất của kiểu số (giá trị của

phần tử phải lớn hơn hoặc bằng giá trị này)minLength Xác định số ký tự hoặc số lượng danh sách phần

tử tối thiểu cho phép. Phải lớn hơn hoặc bằng 0pattern Xác định trình tự chính xác các ký tự cho phéptotalDigits Xác định chính xác số lượng chữ số cho phép.

Phải lớn hơn hoặc bằng 0whiteSpace Xác định cách thức hiên thị của các ký tự không

nhìn thấy được (dòng mới, các tab, các khoảng trắng, dấu xuống dòng)

36XML Schema

Page 37: Document Type Definition - xml schema

1 phần tử phức hợp là 1 phần tử XML mà chứa (các) phần tử hoặc/và thuộc tính khác

Có 4 kiểu phần tử phức hợp• Phần tử rỗng• Phần tử chỉ chứa text• Phần tử chỉ chứa phần tử• Phần tử chứa text và phần tử

Chú ý là 4 kiểu trên có thể chứa thuộc tính , thuộc tính là tuỳ chọn.

Chúng ta có thể định nghĩa 1 phần tử phức hợp trong XML Schema với 2 cách khác nhau.

37XML Schema

Page 38: Document Type Definition - xml schema

1. Phần tử employee có thể được khai báo trực tiếp bằng cách đặt tên phần tử, như sau<xs:element name=“employee">  <xs:complexType>    <xs:sequence>      <xs:element name="firstname" type="xs:string"/>      <xs:element name="lastname" type="xs:string"/>    </xs:sequence>  </xs:complexType></xs:element>

Chỉ có phần tử employee mới có thể dùng kiểu phức hợp đã chỉ ra.

xs:sequence: phần tử con phải xuất hiện theo đúng thứ tự đã được khai báo

38XML Schema

Page 39: Document Type Definition - xml schema

2. Phần tử employee có 1 thuộc tính personinfo tham chiếu đến tên của kiểu phức hợp<xs:element name="employee" type="personinfo"/><xs:complexType name="personinfo">  <xs:sequence>    <xs:element name="firstname" type="xs:string"/>    <xs:element name="lastname" type="xs:string"/>  </xs:sequence></xs:complexType>

Bằng cách này thì các phần tử khác cũng có thể tham chiếu đến kiểu phức hợp có tên là personinfo

39XML Schema

Page 40: Document Type Definition - xml schema

1 phần tử rỗng là 1 phần tử chỉ có thể có thuộc tính<product prodid=“12345”/>

Cú pháp:<xs:element name="product">  <xs:complexType>      <xs:attribute name="prodid"

type="xs:positiveInteger"/>  </xs:complexType></xs:element>

40XML Schema

Page 41: Document Type Definition - xml schema

Hoặc cũng có thể gán cho phần tử 1 thuộc tính tham chiếu đến tên của kiểu phức hợp chỉ chứa thuộc tính<xs:element name="product" type="prodtype"/><xs:complexType name="prodtype">  <xs:attribute name="prodid"

type="xs:positiveInteger"/></xs:complexType>

41XML Schema

Page 42: Document Type Definition - xml schema

Cú pháp:<xs:element name="person">  <xs:complexType>    <xs:sequence>      <xs:element name="firstname" type="xs:string"/>      <xs:element name="lastname" type="xs:string"/>    </xs:sequence>  </xs:complexType></xs:element>

Hoặc:<xs:element name="person" type="persontype"/><xs:complexType name="persontype">  <xs:sequence>    <xs:element name="firstname" type="xs:string"/>    <xs:element name="lastname" type="xs:string"/>  </xs:sequence></xs:complexType>

42XML Schema

Page 43: Document Type Definition - xml schema

Cú pháp:<xs:element name="somename">  <xs:complexType>    <xs:simpleContent>      <xs:extension base="basetype">        ....        ....      </xs:extension>    </xs:simpleContent>  </xs:complexType></xs:element>

43XML Schema

Page 44: Document Type Definition - xml schema

Là phần tử chứa văn bản, phần tử con và thuộc tính:<xs:element name="letter">  <xs:complexType mixed="true">    <xs:sequence>      <xs:element name="name" type="xs:string"/>      <xs:element name="orderid" type="xs:positiveInteger"/>      <xs:element name="shipdate" type="xs:date"/>    </xs:sequence>  </xs:complexType></xs:element>

Để cho phép dữ liệu kí tự xuất hiện giữa những phần tử con của letter thì thuộc tính mixed phải được thiết lập là true.

44XML Schema

Page 45: Document Type Definition - xml schema

Có 7 indicator và được chia thành 3 nhóm:• Indicator thứ tự• Indicator xuất hiện• Indicator nhóm

45XML Schema

Page 46: Document Type Definition - xml schema

Được dùng để định nghĩa thứ tự của những phần tử• all: những phần tử con có thể xuất hiện trong

thứ tự bất kì và từng phần tử con đó chỉ được xuất hiện 1 lần duy nhất

• choice: chỉ có 1 phần tử con có thể xuất hiện• sequence: những phần tử phải xuất hiện đúng

thứ tự như đã khai báo

46XML Schema

Page 47: Document Type Definition - xml schema

Định nghĩa là 1 phần tử có thể xuất hiện bao nhiêu lần:• minOccurs: Chỉ ra số lần tối thiểu mà 1 phần tử có thể xuất

hiện• maxOccurs: Chỉ ra số lần tối đa mà 1 phần tử có thể xuất

hiệm Để cho phép 1 phần tử có số lần xuất hiện

không giới hạn thì ta gán maxOccurs=”unbounded”

Chú ý: Khi dùng <all> indicator ta có thể thiết lập minOccurs là 0 hay 1 và maxOccurs chỉ có thể thiết lập là 1

47XML Schema

Page 48: Document Type Definition - xml schema

Element Group: nhóm những phần tử liên quan

<xs:group name="groupname">...</xs:group>

Bạn phải định nghĩa 1 phần tử all, choice hay sequence bên trong khai báo group

Sau khi bạn định nghĩa 1 group , bạn có thể tham chiếu nó trong 1 định nghĩa khác<xs:element name=“xxx" type=“yyy"/><xs:complexType name=“yyy"><xs:sequence><xs:group ref=“groupname"/>...</xs:sequence></xs:complexType>

48XML Schema

Page 49: Document Type Definition - xml schema

• Attribute Group: nhóm những thuộc tính liên quan<xs:attributeGroup name="groupname">...</xs:attributeGroup>

• Sau khi định nghĩa 1 attribute group, ta có thể tham chiếu nó trong 1 định nghĩa khác, tương tự như Element Group

49XML Schema

Page 50: Document Type Definition - xml schema

Phần tử <any> cho phép chúng ta mở rộng tài liệu XML với những phần tử không được chỉ rõ bởi schema.

Phần tử <anyAttribute>: cho phép chúng ta mở rộng tài liệu XML với những thuộc tính không được chỉ rõ trong schema.

Phần tử <any> và <anyAttribute> được dùng để tạo những tài liệu mở rộng. Chúng cho phép tài liệu chứa những phần tử bổ sung mà không được khai báo trong XML schema chính.

50XML Schema

Page 51: Document Type Definition - xml schema

Với XML Schema, 1 phần tử có thể thay thế 1 phần tử khác.

Để giải quyết vấn đề này chúng ta định nghĩa 1 substitutionGroup trong XML schema. Đầu tiên chúng ta khai báo 1 phần tử head và sau đó khai báo những phần tử khác mà mô tả là chúng có thể thay thế phần tử head.

51XML Schema

Page 52: Document Type Definition - xml schema

Chú ý là tất cả những phần tử trong substitutionGroup (phần tử head và những phần tử có thể thay thế) phải được khai báo là những phần tử global, nếu không thì sẽ không đúng.

Những phần tử global là những phần tử con trực tiếp của phần tử schema. Những phần tử cục bộ là những phần tử bị lồng bên trong 1 phần tử khác.

52XML Schema

Page 53: Document Type Definition - xml schema

• Kiểu dữ liệu chuỗi• Kiễu dữ liệu ngày tháng và thời gian• Kiểu dữ liệu số• Các kiểu dữ liệu khác

53XML Schema

Page 54: Document Type Definition - xml schema

string: là kiểu dữ liệu chứa các ký tự, khoảng trắng, dấu xuống dòng, trở về đầu dòng, tab<xs:element name="customer" type="xs:string"/>

normalizedString: tương tự như kiểu string nhưng trình xử lý XML sẽ xóa hết tất cả các dấu xuống dòng, trở về đầu dòng và phím tab<xs:element name="customer" type="xs:normalizedString"/>

token: tương tự như normalizedString nhưng trình xử lý XML sẽ xóa thêm các khoảng trắng đầu và cuối chuỗi và các khoảng trắng liên tiếp<xs:element name="customer" type="xs:token"/>

54XML Schema

Page 55: Document Type Definition - xml schema

<xs:element name="start" type="xs:date"/> Ngày trong XML Schema được quy định theo biểu

thức yyyy-mm-dd<start>2010-06-01</start>

Bắt buộc phải nhập đầy đủ các phần tử Để chi rõ 1 time zone, ta có thể nhập 1 ngày trong

thời gian UTC bằng cách thêm chữ Z vào sau 1 ngày<start>2002-09-24Z</start>

Hay bạn có thể chỉ rõ 1 offset từ thời gian UTC bằng cách thêm 1 thời gian dương hay âm sau 1 ngày

<start>2002-09-24-07:00</start><start>2002-09-24+07:00</start>

55XML Schema

Page 56: Document Type Definition - xml schema

Cú pháp:<xs:element name="start" type="xs:time"/>

Có dạng hh:mm:ss<start>09:00:00</start>

Hoặc <start>09:00:10.5</start>

Để chỉ rõ 1 time zone thì ta làm như kiểu dữ liệu date ở trên

56XML Schema

Page 57: Document Type Definition - xml schema

Cú pháp:<xs:element name="startdate" type="xs:dateTime"/>Có dạng : YYYY-MM-DDThh:mm:ss<startdate>2002-05-30T09:00:00</startdate>

Hoặc:<startdate>2002-05-30T09:30:10.5</startdate>

• Time Zones của dateTime giống như date

57XML Schema

Page 58: Document Type Definition - xml schema

Cú pháp: <xs:element name="period" type="xs:duration"/>

Dùng để chỉ rõ 1 khoảng thời gian, có dạng: PnYnMnDTnHnMnS <period>P5Y</period>

Hoặc <period>P5Y2M10D</period> Có thể không cần ghi đầy đủ hết các thành

phần Thêm ‘-’ để biểu thị khoảng thời gian âm

<period>-P5Y</period>

58XML Schema

Page 59: Document Type Definition - xml schema

Name Descriptiondate Định nghĩa giá trị ngàydateTime Định nghĩa kiểu giá trị ngày và giờduration Định nghĩa khoảng thời giangDay Định nghĩa 1 phần của ngày – ngày (DD)gMonth Định nghĩa 1 phần của ngày – tháng (MM)gMonthDay Định nghĩa 1 phần của ngày – ngày và tháng (MM-DD)gYear Định nghĩa 1 phần của ngày - nămgYearMonth Định nghĩa 1 phần của ngày – năm và tháng (YYYY-

MM)time Định nghĩa giá trị thời gian

59XML Schema

Page 60: Document Type Definition - xml schema

60

byte Số 8 bitdecimal Kiểu số thập phânint Số nguyên 32 bit có dấuinteger Số nguyên long Số nguyên 64 bit có dấunegativeInteger Số nguyên âm (không chứa số 0)nonNegativeInteger

Số nguyên dương (có chứa số 0)

nonPositiveInteger

Số nguyên âm (có chứa số 0)

positiveInteger Số nguyên dương (không chứa số 0)short Số nguyên 16 bitunsignedLong Số nguyên 64 bit không dấuunsignedInt Số nguyên 32 bit không dấuunsignedShort Số nguyên 16 bit không dấuunsignedByte Số nguyên 8 bit không dấuXML Schema

Page 61: Document Type Definition - xml schema

61

Kiểu boolean<xs:attribute name="disabled" type="xs:boolean"/>

Giá trị hợp lệ có thể là true/false hoặc 1/0 Kiểu nhị phân: có 2 dạng:

– base64Binary– hexBinary<xs:element name="blobsrc" type="xs:hexBinary"/>

Kiểu anyURI:<xs:attribute name="src" type="xs:anyURI"/>

XML Schema

Page 62: Document Type Definition - xml schema

XML Schema được sử dụng để quy định cấu trúc cho tài liệu XML (tương tự DTD)

XML Schema là ngôn ngữ con của XML, dựa trên cú pháp XML.

XML Schema quy định rõ kiểu dữ liệu cũng như các ràng buộc trên dữ liệu đối với nội dung từng phần tử cũng như giá trị các thuộc tính.

62XML Schema

Page 63: Document Type Definition - xml schema

HẾT CHƯƠNG

63XML Schema