Bài giảng Ngôn ngữ đánh dấu mở rộng XML - Nguyễn Thanh Bình
Mục đích:
Giới thiệu một số nét chính về lịch sử của XML, phạm vi và mục đích của XML và nội dung chính của môn học
Nội dung chính của chương bao gồm:
Giới thiệu tổng quan về ngôn ngữ đánh dấu và XML
Lịch sử của việc đánh dấu và ngôn ngữ đánh dấu
Sự phát triển của ngôn ngữ đánh dấu
Kiến trúc 3 tầng của XML
Các vùng ứng dụng của XML
Các ưu điểm của XML và khi nào không cần đến XML
Các công nghệ liên quan đến XML
Tài liệu XML
Các công cụ hỗ trợ
Định dạng tài liệu XML
ược khai báo trước đó. DTD: XML: ENTITIES Kiểu đa thực thể (ENTITIES) là kiểu số nhiều ENTITY cho phép gán nhiều thực thể vào thuộc tính. Các thực thể được tổ chức thành một danh sách cách nhau bằng khoảng trắng DTD: XML: NOTATION Kiểu dữ liệu ghi nhớ (NOTATION). Định nghĩa ghi nhớ thường dùng để xác định dạng thức của các dữ liệu phi XML Kiểu MIME (Multipurpose Internet Mail Extension) Các phần tử ghi nhớ được định nghĩa trước sau đó được dùng để gán cho các thuộc tính được khai báo là NOTATION Cú pháp: DTD: XML: Nhúng dữ liệu phi XML vào tài liệu XML cho phép việc nhúng dữ liệu phi XML (non-XML data) vào trong tài liệu Việc nhúng dữ liệu phi XML được thực hiện bằng cách dùng các tham chiếu thực thể ngoại không ở dạng phân tích (unparsed entity). Khi diễn dịch nội dung tài liệu XML, bộ phân tích sẽ liên kết và nhúng nội dung của thực thể vào tài liệu. Nhúng dữ liệu phi XML vào tài liệu Cú pháp: XML: Nhúng nhiều thực thể phi định dạng vào tài liệu Khai báo này cho phép một thuộc tính thực thể có khả năng tham chiếu đồng thời đến nhiều dữ liệu nhị phân. DTD: XML: Bài tập 1: Ứng dụng lập kế hoạch ngày Lập lịch cho các cuộc hẹn và công việc Ngày Date Thời gian Time Kiểu cuộc họp Appointment type Hướng dẫn phần XML XML file: . Phần tử gốc planner nắm giữ thông tin về các cuộc hẹn Phần tử date chứa các ngày với thuộc tính month và day Các phần tử note đánh dấu các cuộc hẹn Hướng dẫn phần XML tt Hướng dẫn phần DTD Bài tập 2: Lập lịch cho chương trình TV ]> Bài tập 3: Quản lí các bài báo ]> Bài tập 4:Danh mục sản phẩm Bài tập 4: Danh mục sản phẩm tt ]> 3 xsd XML Schema Lược đồ XML Nguyễn Thanh Bình Nội dung Mục đích: Tìm hiểu khái niệm lược đồ XML và cách sử dụng lược đồ để khai báo kiểu tài liệu và các phần tử Nội dung chính của chương bao gồm: Giới thiệu lược đồ XML Định nghĩa kiểu dữ liệu và các phần tử của tài liệu trong lược đồ Kiểu đơn Kiểu phức hợp Giới hạn dữ liệu (facet) Tổng quan về lược đồ XML Lược đồ XML là một chọn lựa thay thế DTD trong ngữ cảnh ngôn ngữ đánh dấu mở rộng XML Một lược đồ XML miêu tả cấu trúc của một tài liệu XML Ngôn ngữ định nghĩa lược đồ (XML Schema Definition -xsd). Lược đồ XML đầu tiên được đề cử bởi Microsoft, nhưng trở thành là sự tiến cử chính thức của W3C vào tháng 5 năm 2001 Giới thiệu lược đồ XML Lược đồ XML tuy không đơn giản hơn DTD nhưng nó tỏ ra mạnh mẽ và chính xác hơn Một trong những mặt mạnh của lược đồ XML là sự hỗ trợ cho kiểu dữ liệu Với việc hỗ trợ kiểu dữ liệu: Dễ dàng miêu tả các nội dung tài liệu Dễ dàng xác nhận tính hợp lệ của dữ liệu Dễ dàng làm việc với dữ liệu từ CSDL Dễ dàng định nghĩa các qui tắc bảo mật, ràng buộc của dữ liệu Dễ dàng định nghĩa các mẫu dữ liệu Dễ dàng chuyển đổi dữ liệu giữa những kiểu dữ liệu khác nhau Lược đồ XML là gì ? Mục đích của một lược đồ XML là để định nghĩa các khối xây dựng hợp lệ của một tài liệu XML, như DTD Một lược đồ XML: Định nghĩa các phần tử xuất hiện trong tài liệu Định nghĩa các thuộc tính Định nghĩa các phần tử con Định nghĩa thứ tự giữa các phần tử con Định nghĩa số các phần tử con Định nghĩa phần tử là rỗng hay chứa dữ liệu Định nghĩa kiểu dữ liệu cho các phần tử và thuộc tính Định nghĩa các giá trị mặc nhiên và cố định cho các phần tử và thuộc tính Các lược đồ Các hạn chế của DTD DTDs được viết theo cú pháp phi XML DTDs không thể mở rộng được DTD không được hỗ trợ của các không gian tên DTD chỉ cung cấp các kiểu dữ liệu bị hạn chế Các nét đặc trưng của lược đồ XML Cú pháp XML được sử dụng như là cơ sở cho việc tạo các tài liệu lược đồ XML Các lược đồ XML có thể được xử lí như các tài liệu XML khác Có kiểu dữ liệu phong phú Các nguyên mẫu Nhóm các thuộc tính Có thể tinh chế các nguyên mẫu Lược đồ XML là thay thế của DTD Lược đồ XML sẽ thay thế DTD vì các lí do sau: Các lược đồ XML là mở rộng được đáp ứng các yêu cầu trong tương lai Các lược đồ XML phong phú và hữu dụng hơn DTD Các lược đồ XML được viết trong XML Các lược đồ XML hỗ trợ các kiểu dữ liệu Các lược đồ XML hỗ trợ các không gian tên Lược đồ XML sử dụng cú pháp XML Bởi vì lược đồ XML được viết trong XML nên: Không phải học về ngôn ngữ khác Sử dụng trình soạn thảo XML để soạn thảo các lược đồ Sử dụng bộ phân tích XML để phân tích các file lược đồ Xử lí các lược đồ với XML DOM Chuyển đổi lược đồ với xsdLT Lược đồ XML đảm bảo an toàn cho truyền thông dữ liệu Khi dữ liệu được gởi từ người gởi đến người nhận thực sự là quan trọng khi cả hai phần có cùng ‘mong muốn’ về nội dung. Với lược đồ XML, người gởi có thể miêu tả dữ liệu theo cách mà người nhận có thể hiểu. Ví du như ngày "03-11-2004" sẽ được thông dịch một số nơi là “ 3. November“ và cũng có thể là “11. March”, nhưng phần tử XML với kiểu dữ liệu như sau: 2004-03-11 Đảm bảo sự thông hiểu của nội dung bởi vì kiểu dữ liệu date yêu cầu định dạng YYYY-MM-DD. Khả năng mở rộng được của lược đồ XML Lược đồ XML có khả năng mở rộng được, bởi vì chúng được viết trong XML Với khả năng mở rộng được của lược đồ bạn có thể: Sử dụng lại lược đồ trong các lược đồ khác Tạo các kiểu dữ liệu riêng từ các kiểu dữ liệu chuẩn Tham chiếu đến nhiều lược đồ từ một tài liệu Một ví dụ đơn giản về lược đồ XML Phần tử Phần tử là phần tử gốc của mọi lược đồ XML: Cú pháp: ...... . ..... Tham chiếu đến lược đồ XML Khai báo các phần tử và kiểu dữ liệu Để chỉ định kiểu cho một phần tử trong lược đồ XML, thì kiểu phải được định nghĩa trước đó Có hai loại khai báo kiểu trong lược đồ XML: Kiểu đơn- là kiểu không thể chứa các phần tử khác hay thuộc tính 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. Các kiểu dữ liệu chung của lược đồ XML Lược đồ XML có nhiều kiểu dữ liệu. Các kiểu thường gặp như sau: ENTITIES ID int, integer IDREF NOTATION NMTOKEN, NMTOKENS month time xsd:string Binary boolean byte century date decimal double ENTITY Các kiểu dữ liệu trong lược đồ Chỉ định số lần xuất hiện các phần tử Trong xsd chúng ta sử dụng hai thuộc tính minOccurs và maxOccurs theo cú pháp như sau: Nếu không chỉ định minOccurs=“1” còn maxOccurs là không giới hạn Chỉ định giá trị mặc định cho phần tử Ngoài hai thuộc tính minOccurs và maxOccurs, có thể sử dụng thuộc tính fixed và default của khai báo để chỉ định giá trị có thể gán cho phần tử. default: dùng để gán giá trị mặc định cho phần tử fixed: dùng để gán cố định và bắt buộc cho phần tử xsd:element name=“trialValue” fixed=“1306”/> xsd:element name=“trialValue” default=“1306”/> Kiểu phần tử đơn Lược đồ XML định nghĩa các phần tử của tài liệu XML Một phần tử đơn là một phần tử XML có thể chỉ chứa văn bản. Nó không thể chứa các phần tử khác hay thuộc tính Văn bản có thể có nhiều kiểu khác nhau. Nó có thể là một trong các kiểu chứa trong định nghĩa lược đồ XML (boolean, string, date, etc.), hoặc nó có thể là kiểu được định nghĩa riêng Các ràng buộc cũng có thể được thêm vào một kiểu dữ liệu để giới hạn nội dung, và yêu cầu dữ liệu đúng theo các mẫu được định nghĩa Định nghĩa một phần tử đơn Cú pháp: - Khi xxx là tên của phần tử và yyy là kiểu dữ liệu của phần tử XML Schemas: XML Document: Refsnes 34 1968-03-27 Định nghĩa kiểu đơn Kiểu đơn có thể được định nghĩa dựa trên kiểu đơn cơ sở ...... Tạo kiểu đơn thông qua giới hạn kiểu Khái niệm facet dùng để chỉ phạm vi giới hạn tập dữ liệu kiểu đơn. Cú pháp: Khi yyy là một kiểu Hoặc: Khi xxx là tên của phần tử, yyy là một kiểu minIn(Ex)clusive, maxIn(Ex)clusive 1. minInclusive (>=) và maxInclusive ( 2. minExclusive (>) và maxExclusive ( Theo mẫu (pattern) XSD XML INV #99426 Cú pháp: Kiểu liệt kê (enumeration) XSD: XML: Asia Cú pháp: Kiểu vô danh Cú pháp: (kiểu đơn) (kiểu phức hợp) Tạo các phần tử có kiểu hỗn hợp Phần tử có thể chứa văn bản và các phần tử con là phần tử có kiểu hỗn hợp Cú pháp: .... Ví dụ về kiểu hỗn hợp Lược đồ chú giải Lược đồ XML định nghĩa 3 phần tử sau: là phần tử chú giải và có thể chứa 2 phần tử dưới dùng để chứa chuỗi văn bản bạn muốn ghi chú chứa thông tin liên quan đến ứng dụng This schema will be used to validate the set of XML documents for the Endangered Species project. Tạo các lựa chọn (choices) Tạo danh sách các phần tử mà chỉ có một phần tử được chọn Cú pháp: ... Tạo các khai báo tuần tự Trong lược đồ XML, chúng ta có thể định nghĩa thứ tự xuất hiện của các phần tử bởi định nghĩa . Thuộc tính trong XSD Chỉ có các phần tử hỗn hợp mới có thuộc tính. Cú pháp: Here is an XML element with an attribute: Smith And here is a corresponding simple attribute definition: Khai báo các trị cho thuộc tính Default: xsd:attribute name="lang" type="xsd:string" use="default“ value="EN"/> Fixed: Optional: (giống như implied của DTD) Required: Prohibited: không cho phép thuộc tính xuất hiện Sử dụng từ khóa use trong khai báo Tạo nhóm và các thuộc tính nhóm Chúng ta có thể gom các phần tử vào thành một nhóm (group). Cú pháp: Tạo các phần tử rỗng Phần tử rỗng không có nội dung nhưng lại có thể có thuộc tính Cú pháp để khai báo phần tử rỗng Tạo nhóm all Lược đồ XML còn đưa ra một khái niệm all: Tất cả phần tử định nghĩa trong nhóm all phải xuất hiện đồng thời Hoặc không phần tử nào xuất hiện cả Các phần tử xuất iện không quá một lần Cú pháp: Viết XSD của tài liệu XML chứa nội dung sau John Smith Ola Nordmann Langgt 23 4000 Stavanger Norway Empire Burlesque Special Edition 1 10.90 Hide your heart 1 9.90 Tạo file "shiporder.xsd". Chúng ta tạo lược đồ dựa trên cấu trúc của tài liệu XML, định nghĩa các phần tử . Trong đó chúng ta sử dụng không gian tên chuẩn standard namespace (xs), và URI tương ứng với không gian tên ...... Định nghĩa phần tử "shiporder" Phần tử "shiporder" có một thuộc tính và các phần tử con -> nó có kiểu hỗn hợp complex type. Phần tử xs:sequence dùng đển định nghĩa thứ tự của các phần tử con: ... ... ... Định nghĩa phần tử "orderperson" Đó là một phần tử có kiểu đơn -simple type Định nghĩa phần tử "shipto" Định nghĩa phần tử "item" Phần tử này xuất hiện nhiều lần trong phần tử "shiporder". (maxOccurs = "unbounded“) Phần tử "note" là tùy chọn nên minOccurs=0) Khai báo thuộc tính orderid
File đính kèm:
- Bài giảng Ngôn ngữ đánh dấu mở rộng XML - Nguyễn Thanh Bình.ppt