1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khoá luận tốt nghiệp tìm hiểu về xml

53 470 1

Đ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

Định dạng
Số trang 53
Dung lượng 1,13 MB

Nội dung

Khoá luận tốt nghiệp tìm hiểu về xml Khoá luận tốt nghiệp tìm hiểu về xml Khoá luận tốt nghiệp tìm hiểu về xml Khoá luận tốt nghiệp tìm hiểu về xml Khoá luận tốt nghiệp tìm hiểu về xml Khoá luận tốt nghiệp tìm hiểu về xml Khoá luận tốt nghiệp tìm hiểu về xml

Trang 1

PHẦN 1: CƠ SỞ LÝ THUYẾT

Chương 1: TÌM HIỂU VỀ XML 1.1.Khái niệm XML:

- XML (Extensible Markup Language) ra đời vào tháng 2/1998, XML làtập con của SGML - Standard Generalized Markup Language

- Các tiêu chuẩn của XML qui định bởi W3C - World Wide WebConsortium

- Là ngôn ngữ hình thức thuộc dạng đánh dấu với:

1.2 Mục tiêu ra đời và lợi ích khi sử dụng XML

1.2.1 Mục tiêu ra đời của XML

Ngày nay, XML đang trở thành một chuẩn chung cho việc trao đổi dữ liệucho những ứng dụng chạy trên môi trường Internet Vì XML cho phép ngườidùng có thể tự định nghĩa các thẻ (tag) - những thẻ này làm cho tài liệu XML đadạng hơn những ngôn ngữ thông thường như HTML Như vậy mục tiêu đặt racho sự ra đời XML là : Đầu tiên nó sẽ tương thích với SGML, và dễ dàng viếtnhững chương trình để xử lý cho những tài liệu XML Kế tiếp, những tài liệuXML rõ ràng, dễ đọc, dễ dàng tạo lập Và điều quan trọng là nó được hỗ trợtrong nhiều ứng dụng Nói tóm lại, XML dễ dàng chia sẻ thông tin qua nhữngđịnh dạng khác nhau thông qua môi trường web XML được thiết kế để cho mọingười đều có thể sử dụng được

1.2.2 Lợi ích khi sử dụng XML

Trang 2

Sau đây là một số lợi ích khi sử dụng XML:

 XML được dùng để trao đổi dữ liệu

 XML có thể tách rời dữ liệu, sử dụng XML, dữ liệu được chứa trong cáctập tin XML riêng biệt

 XML có thể mô tả thông tin của những đối tượng phức tạp mà cơ sở dữliệu quan hệ không thể giải quyết được

 XML có thể dùng để chuyển đổi dữ liệu giữa các hệ thống không tươngthích

 XML dùng để chia sẻ dữ liệu với những tập tin văn bản đơn giản dễ hiểu

 XML cũng được dùng để lưu trữ dữ liệu, có thể làm cho dữ liệu hữu íchhơn.Từ XML có thể tạo ra những ngôn ngữ dùng trong các lãnh vựcchuyên môn như WAP, WML,

1.3.Khái niệm tài liệu XML:

- Dạng biểu diễn thông tin được đề xuất của Công nghệ XML

- Văn bản có cấu trúc, được tạo lập dựa trên một ngôn ngữ XML nào đó.

<firstname>Richard</firstname>

<lastname>Feynman</lastname>

phần tử (element)

Trang 3

<title>Waiting for the Mahatma</title>

<Tên thẻ> Nội dung </Tên thẻ>

<lastname>Narayan</lastname>

<title>Waiting for the Mahatma</title>

<published>1981</published>

Như vậy, bằng cách sử dụng định dạng XML, người dùng có thể hiểu vàbiết được tập tin trên đang muốn truyền tải nội dung gì

1.4 Tạo lập một tài liệu XML

Có nhiều cách tạo tài liệu XML nhưng đơn giản nhất là dùng trình soạnthảo Notepad để soạn thảo tài liệu XML, nhưng phải tuân thủ theo qui tắc sau: <root>

Ví dụ một trang tài liệu XML

<?xml version="1.0"?>

<thu_vien>

Trang 4

<ten_sach>Ong gia va bien ca</ten_sach>

<nha_xb>Van Hoc Nghe Thuat</nha_xb>

Dòng kế <sach ID = "1029384"> là phần tử con của thu_vien, trong đó ID

là một thuộc tính của phần tử này, và 1029384 là giá trị của thuộc tính này

Bốn dòng tiếp theo là các phần tử con của sach, trong đó ten_sach,nha_xb, nam_xb, tac_gia là tên của các phần tử và Cuon theo chieu gio, ThanhNien, 1995, Margaret Michell là nội dung của các phần tử tương ứng

Hai dòng cuối cùng là dấu hiệu kết thúc của các phần tử sach, và thu_vien Một số quy định:

Tất cả thẻ trong XML phải có thẻ chấm dứt tương ứng

vd: XML sai <ten_sach>Cuon theo chieu gio

XML đúng <ten_sach>Cuon theo chieu gio</ten_sach>

Các thẻ XML phân biệt chữ hoa, chữ thường

vd: sai <Ten_Sach>Cuon theo chieu gio</ten_sach>

Trang 5

đúng <ten_sach>Cuon theo chieu gio</ten_sach>

Các thẻ XML phải được lồng theo đúng thứ tự

vd: sai <ten_sach>Cuon theo chieu gio<nam_xb>1995</ten_sach></nam_xb> đúng <ten_sach>Cuon theo chieu gio</ten_sach><nam_xb>1995</nam_xb> XML phải có phần tử gốc (root element) và chỉ nên có 1, trong ví trên làthu_vien

Các giá trị thuộc tính của XML phải để trong ngoặc kép

vd: sai <sach ID= 1029384>

đúng <sach ID="1029384">

Tên các phần tử không được có khoảng trắng

vd: sai <ten sach>Cuon theo chieu gio</ten sach>

đúng <ten_sach>Cuon theo chieu gio</ten_sach>

1.5 Cấu trúc & cú pháp

1.5.1 Cấu trúc:

Một tập tin XML là tập tin văn bản thuần tuý, có phần mở rộng là xml vàgồm có 3 phần chính:

 Phần khai báo: cho biết đây là 1 tập tin XML

 Phần liên kết: định nghĩa kiểu, thông tin về các liên kết (nếu có), thông tinchỉ định cách thức xử lý (processing instructions) đối với văn bản XMLnày Phần này không bắt buộc phải có

 Phần nội dung là phần chính của XML, nó chứa đựng dữ liệu cần chứatrong tập tin XML Phần nội dung có cấu trúc hình cây:

- Toàn bộ tập tin XML chỉ có 1 phần tử gốc duy nhất

- Bên trong phần tử gốc có thể có nhiều phần tử con

- Các phần tử con có thể có thể nhiều phần tử con và cứ thế tiếp tục

Trang 6

Một tài liệu XML Well-Formed

 Phải có một root (gốc) Element duy nhất, gọi là DocumentElement, nó chứa tất cả các Elements khác trong tài liệu

 Mỗi opening Tag phải có một closing Tag giống như nó

 Tags trong XML thì case sensitive, tức là opening Tag và closingTag phải được đánh vần y như nhau, chữ hoa hay chữ thường

 Mỗi Child Element phải nằm trọn bên trong Element cha của nó.Attribute value trong XML phải được gói giữa một cặp ngoặc képhay một cặp apostrophe (nháy đơn)

Valided Một văn bản XML được gọi là Valided thì trước hết nó phải là

văn bản Well-Formed và phải phù hợp với tất cả các định nghĩa trong mộtđặc tả chung cho các văn bản có cùng cấu trúc, gọi là DTD (DocumentType Definition)

Nói cách khác, văn bản XML được coi là Valided nếu nó không chứa bất

kỳ phần tử nào mà không được định nghĩa trước trong DTD và thứ tự xuất hiện,

số lần xuất hiện của một phần tử phải phù hợp với các đặc tả của DTD

Trang 7

Để có thể trao đổi thông tin có cấu trúc, hai cơ sở dữ liệu phải thống nhấtdùng chung một đặc tả DTD cho các văn bản XML Tuy nhiên với các văn bảnphi cấu trúc thì không nhất thiết phải tuân thủ hoàn toàn chuẩn về tính Validedcủa một tài liệu XML, mà chỉ cần một phần trong chúng chứa những thông tinhữu ích giúp cho việc mô tả tính chất và nội dung của bản thân tài liệu Cácthông tin mô tả này còn gọi là Meta-Data(Dữ liệu mô tả về các dữ liệu).

1.5.2.1.DTD (Document Type Definition)

Định nghĩa kiểu dữ liệu cho các phần tử thẻ còn gọi là định nghĩa kiểu tư

liệu Document Type Definition (DTD).

Cú pháp định nghĩa và khai báo kiểu tư liệu cho các phần tử thẻ :

< !DOCTYPE root-name [DTD]

>

Để bắt đầu định nghĩa kiểu tư liệu cho các phần tử XML dùng khai báo:

<! DOCUMENT rootname [DDT]> Ngoài ra còn có một số khai báo khác

 DTD là định nghĩa cho phần tử trong tài liệu

 DTD cần theo cú pháp qui định của tổ chức XML W3C

- Phần khai báo định nghĩa kiểu tư liệu đặt ở phần khởi đầu tài liệu XML Cónhiều mẫu khai báo :

< !DOCTYPE root-name [DTD]>

< !DOCTYPE root-name SYSTEM URL>

< !DOCTYPE root-name SYSTEM URL [DTD]>

Trang 8

 Các kiểu dữ liệu của phần tử và thuộc tính

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

<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"/>

Trang 9

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

 <include>: giống như #include trong ngôn ngữ C

 schemaLocation: cho biết nơi để lấy thông tin

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

Trang 10

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

 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ộctính, hoặc chứa các phần tử con khác

1.5.4 Cú pháp

Có các qui tắc về cú pháp để soạn thảo một tập tin XML:

 Dòng đầu tiên của tập tin XML là dòng khai báo Vd:

<?xml version="1.0" standalone="yes/no" encoding="UTF-8"?>

version: hiện tại đang là 1.0, version báo cho bộ xử lý XML biết nó sẽ tuân thủcác qui định về XML version 1.0

 Nếu standalone = yes thì bộ xử lý XML sẽ tìm văn bản định nghĩa DTD đikèm, từ đó mà xử lý phần nội dung XML theo qui định của DTD

encoding: phiên bản XML 1.0 xem UTF-8 là mặc định, có thể bỏ qua khai báonày

 Toàn bộ dòng trên phải được viết bằng chữ thường

 Tuân thủ các quy định của văn bản định dạng DTD

 Thống nhất trong cách dùng chữ HOA, chữ thường cho tên của phần tử

Trang 11

 Hoặc dùng toàn chữ thường, toàn chữ hoa, hoặc chỉ viết hoa ký tự đầu tiên

 Đặt giá trị thuộc tính trong dấu ngoặc đơn hoặc ngoặc kép

 Nhớ đóng tất cả các thẻ (mọi thẻ mở phải có thẻ kết) kể cả các thẻ rỗng(thẻ không có giá trị)

 Các thẻ rỗng có 2 cách viết: <the_rong></the_rong> hoặc <the_rong />

Thuộc tính là tùy chọn có hoặc không

Nội dung của phần tử có thể là:

Văn bản thuần túy (dữ liệu đơn): <hoten>Nguyen A</hoten>

Dữ liệu phức, trong đó chứa các phần tử con:

<hoten><ho>Nguyen</ho><ten>A</ten></hoten>

Rỗng: <hoten />

Khoảng trắng trong nội dung không bị cắt bớt như HTML

Nên phân biệt phần tử và thẻ Khi nói đến phần tử là nói đến toàn bộ khối dữ liệubắt đầu từ thẻ mở đến thẻ đóng

 Tên của thẻ do người dùng đặt, do đó nên chọn tên có ý nghĩa và dẽ nhớ.Tên của thẻ tuân theo các qui định:

 Không bắt đầu bằng số hoặc các dấu đặc biệt

 Có thể chứa chữ, số và các ký tự khác

 Không chứa khoảng trắng

 Không bắt đấu bằng 3 chữ xml hay XML

 Các phần tử có mối liên hệ cha - con nếu được đặt lồng nhau

1.6.2 Phần tử gốc (root):

Trang 12

Trong tài liệu XML, chỉ có một phần tử gốc, và phần tử này sẽ chứa tất cảnhững phần tử của tài liệu XML do chúng ta tạo ra.

1.6.3.Thuộc tính (Attributes):

Thuộc tính của 1 phần tử cung cấp thông tin bổ sung về phần tử đó

Thuộc tính của 1 phần tử luôn được đặt bên trong thẻ của phần tử đó

Thuộc tính được khai báo theo công thức:

tên_thuộc_tính = "giá_trị_thuộc_tính"

Nếu trong thuộc tính có dấu " thì dùng kết hợp dấu đơn và kép:

<cau_thu nick="ông 'Pele' đen">

Thuộc tính thường chứa thông tin cần thiết cho phần mềm hơn là chongười xem

Ví dụ có văn bản XML như sau:

Trang 13

<header>Hello</header>

<noi_dung>Sao? Luc nay khoe khong?"</noi_dung>

</e_mail>

Một số nhược điểm khi dùng thuộc tính:

 Thuộc tính không thể chức nhiều giá trị, phần tử thì có thể tạo phần tử con

 Thuộc tính khó mở rộng về sau

 Thuộc tính không mô tả cấu trúc của 1 văn bản XML

 Thuộc tính khó truy xuất bằng ngôn ngữ lập trình hơn phần tử (vì các thưviện hàm điều khiển thuộc tính không nhiều)

 Thuộc tính khó tương thích với văn bản định dạng DTD hơn phần tử

1.6.4 Chú thích (Comments)

Giống như HTML, trong văn bản XML bạn có thể đặt chú thích vào đểgiải thích điều gì đó cho người đọc mà không ảnh hưởng đến cấu trúc của toàn

bộ văn bản XML Chú thích được thêm vào theo công thức sau:

<! đặt nội dung chú thích nơi đây >

Trang 14

1.6.5 CDATA

CDATA (character data) nói cho bộ phân tích XML biết toàn bộ nội dungđặt trong CDATA là văn bản thuần túy, không cần phân tích chi tiết bên trong CDATA được dùng khi nội dung của 1 phần tử là 1 đoạn văn bản quá dài vớinhiều ký tự đặc biệt

CDATA có cú pháp như sau:

<![CDATA[ đặt nội dung văn bản nơi đây ]]>

CDATA bắt đầu bằng <![CDATA[

Sau đó là nội dung văn bản

CDATA không thể chứa một CDATA khác

Không có khoảng trắng trong thẻ <![CDATA[ và ]]>

Trang 15

Khóa tắt (entity) là 1 từ khóa dùng viết tắt thay cho 1 đoạn văn bản, hay từ khác Khóa tắt được đưa vào XML dưới dạng:

&tên-khóa;

Bắt đầu bằng dấu & đến tên khóa, sau đó dấu ;

Khóa tắt là khái niệm dùng chung cho HTML và XML Ví dụ trong HTML cụm

&lt; thay thế cho <

Lợi ích của việc dùng khóa tắt là:

 Giảm công sức đánh máy, nếu gặp phải 1 đoạn văn mà xuất hiện trênnhiều tài liệu khác nhau, cần đặt khóa tắt cho đoạn văn bản đó

 Giảm lỗi, dĩ nhiên Khi đánh máy 1 cụm từ thay cho 1 đoạn văn bản thì ítlỗi hơn

 Sửa đổi dễ dàng Nếu muốn sửa đoạn văn bản trong khóa tắt thì chỉ sửatrong phần định nghĩa

 Khóa tắt có thể dùng để giữ chỗ cho các thông tin còn chưa rõ ràng, sẽ cậpnhật sau này

Khóa tắt được định nghĩa theo 3 cách:

 Định nghĩa cục bộ ngay trong văn bản XML, tuy nhiên chỉ dùng cho mỗivăn bản XML đó thôi

 Định nghĩa nơi khác và đặt phần liên kết trong văn bản XML

 Định nghĩa trong văn bản định dạng DTD đi kèm với văn bản XML đó Sau đây là cú pháp định nghĩa khóa tắt cục bộ:

<!DOCTYPE [ <!ENTITY tên_khóa "nội_dung_văn bản" >

CDATA bắt đầu bằng <!DOCTYPE [ <!ENTITY toàn bộ chữ in hoa

Sau đó là tên khóa, ghi nhớ rằng tên sẽ phân biệt chữ hoa chữ thường

Phần nội dung phần văn bản tiếp theo sau và cần viết tắt đặt trong dấu nháy đôi " Kết thúc bằng >

<?xml version="1.0" ?>

<!DOCTYPE [

<!ENTITY copyright "Copyright 2002 www.ViDu.com All rights reserved.Please do not copy or redistribute without authorization For authorization,contact root@ViDu.com." >

Trang 16

1.7.Xử lý đọc ghi tài liệu XML

Sử dụng XMLreader và XML writer để đọc và ghi dữ liệu:

XmlReader và XmlWriter là 2 lớp ảo quan trọng nhất trong mô hình đốitượng XML của NET Framework

o XmlReader cung cấp các API để đọc tài liệu XML

o XmlWriter cung cấp các API để tạo ra các tài XML theo chuẩn củaW3C

o Microsoft áp dụng kết hợp ý tưởng của DOM và SAX trong việcthiết kế và xây dựng 2 lớp này

o XmlReader và XmlWriter sử dụng mô hình stream để đọc/ghi từngphần của tài liệu XML

o Do XmlReader và XmlWriter đều là abstract class nên khi sử dụng,cần phải dùng các lớp cụ thể kế thừa từ các lớp này

Trang 17

o Sử dụng các lớp XmlTextReader, XmlNodeReader hay XslReader

Trang 18

 XmlReader cung cấp một số hàm để thao tác trên kiểu và giá trị của nodehiện tại

 Khi hết stream, Read( ) sẽ trả về giá trị False

Ví dụ: đọc và duyệt qua từng node của tài liệu XML và xuất tên của cácelement trong tài liệu

public void DisplayElements( XmlReader reader )

o Thuộc tính NodeType trả về kiểu node (tương tự DOM)

 Với mỗi node đang được đọc, có thể lấy thông tin về giá trị và các thôngtin liên quan đến node đó

o Thuộc tính Value trả về giá trị của node

Trang 19

 XmlReader cung cấp các hàm trả về giá trị theo từng kiểu dữ liệu cụ thể(ReadInt16, ReadDouble, ReadString, …)

public void DisplayNode( XmlReader node )

Trang 20

Attribute là thành phần bên trong của element nên hàm Read( ) KHÔNG

duyệt vào các node attribute!!!

 Để truy cập các attribute của element hiện tại, sử dụng hàm

Trang 21

 XmlWriter cung cấp các hàm để ghi dữ liệu có kiểu cụ thể (nhưWriteInt32( ), WriteDouble( ), WriteString( )…)

public static void Main( String[] args )

{

/* Instantiates an XmlTextWriter that writes to the console */

XmlTextWriter writer = new XmlTextWriter( Console.Out );

/* Use indenting for readability */

Trang 23

Cách đơn giản nhất là dùng văn bản hướng dẫn hiển thị dạng CSS (CascadingStyle Sheet) như ví dụ sau đây:

bookstore {background-color: #ffffff; width: 100%;}

book {display: block; margin-bottom: 30pt; margin-left: 0;}

title {color: #FF0000; font-size: 16pt;}

author {color: #0000FF; font-size: 16pt; }

year, publisher {Display: block; color: #000000; margin-left: 20pt;}

lưu văn bản trên vào 1 tập tin với tên bookstore.css, sau đó thêm dòng

<?xml-stylesheet type="text/css" href="bookstore.css"?>

vào phần khai báo của văn bản XML như sau:

Trang 25

</body>

</html>

lưu văn bản trên vào 1 tập tin với tên thucdon.xsl, sau đó thêm dòng

<?xml-stylesheet type="text/css" href="thucdon.css"?>

vào phần khai báo của văn bản XML như sau:

 Nạp dữ liệu vào DataSet

static void FillMyDataSet(DataSet ds)

{

string strConn, strSQL;

strConn = "Data Source= localhost;" +

Trang 26

"Initial Catalog=Northwind; Integrated Security = true; Trusted_Connection=Yes;";

strSQL = "SELECT OrderID, CustomerID, OrderDate FROM Orders " +

"WHERE CustomerID = 'GROSR'";

SqlDataAdapter daOrders, daDetails;

daOrders = new SqlDataAdapter(strSQL, strConn);

strSQL = "SELECT OrderID, ProductID, Quantity, UnitPrice " +

"FROM [Order Details] WHERE OrderID IN (SELECT " +

"OrderID FROM Orders WHERE CustomerID = 'GROSR')";

daDetails = new SqlDataAdapter(strSQL, strConn);

daOrders.Fill(ds, "Orders");

daDetails.Fill(ds, "Order Details");

}

 Hiển thị tập tin XML trên IE

static void ShowXmlInIE(string strPathToXml)

strConn = "Data Source= localhost;" +

"Initial Catalog=Northwind; Integrated Security = true;

Trusted_Connection=Yes;";

strSQL = "SELECT TOP 3 CustomerID, CompanyName FROM Customers";

SqlDataAdapter da = new SqlDataAdapter(strSQL, strConn);

DataSet ds = new DataSet();

da.Fill(ds, "Customers");

DataTable tbl = ds.Tables["Customers"];

//Leave the first customer unchanged.

//Modify the second customer.

tbl.Rows[1]["CompanyName"] = "Modified Company Name";

//Delete the third customer.

tbl.Rows[2].Delete();

//Add a new customer.

tbl.Rows.Add(new object[] {"ANEW1", "New Company Name"});

//Write the contents to an XML document in diffgram format

//and display the document in Internet Explorer.

string strPathToXml = "C:\\MyData.XML";

ds.WriteXml(strPathToXml, XmlWriteMode.DiffGram);

ShowXmlInIE(strPathToXml);

Ngày đăng: 30/05/2015, 16:55

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w