Xử lý truy xuất thông tin hỗ trợ việt ngữ
Trang 1KHOA CONG NGHE THONG TIN
NGANH CONG NGHE PHAN MEM
LUAN VAN TOT NGHIEP
XU LY TRUY XUAT THONG TIN
HO TRO VIET NGU
GVHD: Thầy Nguyễn Chánh Thành
SVTH: Nguyễn Văn Tảo - MSSV 00DTH149
Nguyễn Việt Như Trúc — MSSV 00DTH184
Trang 2
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
MỤC LỤC
os LU tò
00/905 2 — 1
LỜI CẮM ƠN -2c2si tri 4
LỜI NÓI ĐẦU -ccccceeeeiriiirirrrrriirririiiiirrrririir 5
PHẦN I: GIỚI THIỆU DOT NET (.NET), C SHARP (C#) . 6
CHUONG I: BỘ KHUNG DOT NET(.NET FRAMEWORK) 7
I Giới thiệu về NET - - Ă + +++*teeteestesesrrerrreereersee 7 i0 r0 I0 .ẻ ố 7
HI Quản lý bộ nhớ NET . Ă5 Ăn 08 9
CHƯƠNG II: GIỚI THIỆU C SHARP (C#‡) - ++c++c++c-« 11
I Tổng quan về C# . -©c7+seeseteerersrseersrrrereee 11
II Hệ thống kiểu trong C# +5: cc+srrtrererreririerrrrersrrre 11
HL Các khái niệm lập trình .- - 5 Ăn heo 12 1 Không gian tên (namespac©) «chen 12
2 Các phát biểu lệnh (StatemenI$) -<cecseereeee 13 DNN xì 6n 13
b Phat bi€u n2 na ae e 14
3 Toán tử điều kiện (Condition operafOr) - -<+<s++s++ 14
3 Truyền tham số - - 5+ +2 +*+s+Eeeieesrrrsrreirerere 20
A Thuộc tính (PropertI€$) - - «Shin 21
V Kế thừa (InheritanC€) - - 5 «St sErrreiesrErirresreierreee 21
VỊ Đa hình (Polymorphism) . . - 5S sSSehnhehtireeerreerse 21
VI Giao điện (Interface) hoặc giao tiếp -. -<+csererererrere 22
PHẦN II: GIỚI THIỆU XML, WEB SERVICES sec 23
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 1
Trang 3
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
CHUONG III: GIỚI THIỆU XML - - - - 5+ <£++£+s+s+sexsterss+2 24
I Giới thiệu công nghệ XML, .-.-. - + snseeeeeeereerre 24
I Tài liệu XML hiển thị như thế nào trong trình duyệt? 25
II Những điều tuyệt điệu về XML -7 +s+csssseesererere 25 IV Tài nguyên XML -. - SH H9 HH 1 011 0 0e 29 V Cấu trúc tài liệu XML - - 5< + SeS+sefesesresesresrsrrrree 30 I1 Y 8 0 30
» N4 1 30
°âu 31
màn 31
5 Không gian tÊn - s99 1n kh 00 tre 32 Nay n 32
rwïnG G1 — Ố 33 VỊ Giao tiếp giữa C# và XML -S-Sessereiererrrrerrrre 34 1 Document Object Model . - - 5 5S neeeenseeerrree 34 2 Reader and WFIt€r - - - 55B H9 nhe 35 CHƯƠNG IV: GIỚI THIỆU WEB SERVICES - 38
I Web Services là gì 2 cccsessreeeree " 38 1 Tính chất của Web SerViC€S - «Series 39 2 Yêu cầu của một Web SerViC€S - - -c<cccssseeeesee 39 TT e1) i2 1n 39
HI Web Services làm việc như thế nào ? -<<-<+sesse+ 41 IV Mô hình thực hiện của Web SerVIC€S ẶcàSeeseenreeeere 4I V Ứng dụng của Web SerViC€S + se ceererrrrriiierrrrrrrir 42 PHẦN III: TƯƠNG TÁC VỚI GOOGLE API -+-52cccxxveee 43 I Tương tác với Google Search sử dụng Google Web Service API 44 1 Tích hợp Google Web Se€rvice€ «cà SSsehheieirriree 44 2 Tích hợp Web Browser ControlÌ - -=s+<seseeesererree 46 Il Tìm kiếm nâng cao với các truy vấn đặc biệt - 46
1 Google Que€ry - c5 He th nh 0 tre 47 2 Yahoo Query 5S S9 9H HH k4 48 3 Altavista QuTV - 5 s1 ng ng kh v4 48 4 Usseek QuerVy - - - - 5-53 1H He hư 0g 48 _ Ul Tach K€WOTỎ - <5 cà k* n4 8 1 H1 ng nh HH 011 114 48 PHẦN IV: HIỆN THỰC HỆ THỐNG -::-++++++irniirrree 50 CHƯƠNG V: GIỚI THIỆU YÊU CẦU . -++++-e++xereee+ 51 I Téng quan hé thong cceceeeseeeessesessecsssesceeseseseenenenesensenenenes 51 1 GiGi thi€u 31
SÂN (009i 1157 7 51
3 Yêu cầu để tài - cSĂ St + sesesereererrerree — 51
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 2
Trang 4
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
II Các chức năng của chương, trình ceereerererrrrrtrrrrrrrrie 52
CHUONG VI: PHAN TICH THIET KE UML -.- -+ 53
I._ Xây dựng se case - SH ri 53
II Xây dựng biểu đồ UML - 5555 S+set#stsrersetererreerrrrr 63
CHƯƠNG VII: XÂY DỰNG CHƯƠNG TRÌNH TỪ ĐIỂN t1 ng tre 74 CHUONG VIII: XAY DUNG CHƯƠNG TRÌNH TÌM KIẾM 78 CHƯƠNG IX: HƯỚNG DẪN CÀI 272001 83
I Yêu cầu hệ thống - + < +** stress 83
` 7
2 phần mễm -. 5< + + s*txttEEErrrrkrrerrkrrrrrrkrke 83
Tl Cai dat chufoing trinh nce cesses seeeeeeeeeeseeeenecseeseeeneeesaseeneeeseaes 83
1 Cài đặt chương trình MySearch và Dictionary - 83
2 Cài đặt Web S€rVIC€S - Ă Ăn SH HH nh nghe, 83
CHƯƠNG X: NHẬN XÉT ĐÁNH GIÁ VÀ HƯỚNG PHAT TRIỂN 84
L Nhận xét đánh giá - sen te 84
1 Kết quả đạt đƯỢC 55+ se se+etetererseseiererererersree 84
2 Hạn chế của để tài - 5s sS+kerierrestrrrrrerere 84
II Hướng phát triỂn - 55 c‡certerrererrrrrrerierrrrertre 85
TÀI LIỆU THAM KHẢO -25-V522£2+zttrxrrrtrrrtrrrrttrrrrrrirrerie 86
-Ầ°
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 3
Trang 5
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
LOI CAM ON >
Chúng em xin chân thành cảm ơn quý Thay cô cùng Ban Giám Hiệu
trường ĐẠI HỌC DÂN LẬP KỸ THUẬT CÔNG NGHỆ, đặc biệt là các
Thây cô trong khoa CÔNG NGHỆ THÔNG TIN đã truyền thụ những kiến
thức đáng giá, tạo điều kiện học tập, nghiên cứu tốt nhất cho chúng em trong
suốt thời gian học tập tại trường
Đặc biệt chúng em xin chân thành cảm ơn Thầy Nguyễn Chánh Thành, người đã tận tình hướng dẫn, chỉ báo để chúng em thực hiện tốt đề tài
này
Chúng tôi xin chân thành cảm ơn các bạn đã có những nhận xét, phê bình, góp ý cho chúng tôi trong suốt thời gian thực hiện
Mặc dù đã có nhiều cố gắng để hoàn thành để tài nhưng do thời gian
có hạn, chắc chắn không tránh khỏi những thiếu sót nhất định Kính mong sự
cảm thông và sự đóng góp những ý kiến vô cùng quý báu của Thầy cô, các
Trang 6
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
LỜI MỞ ĐẦU
Ngày nay, Công nghệ Thông tin đã thật sự thông dụng và đang có
những bước phát triển mạnh mẽ trong rất nhiều lĩnh vực, cả về chiều rộng
lẫn chiểu sâu Máy tính cá nhân không còn xa lạ với con người nữa mà nó đã
trở nên rất quen thuộc và không thể thiếu được đối với nhiều người, nhiều
công ty, nhiều tổ chức hay nhiễu đơn vị v v , nó đã góp phần vào việc mở
rộng một cánh cửa đưa cả nhân loại bước vào thế kỷ 21 - thế kỷ của nên kinh
tế tri thức Bằng sự trợ giúp của máy tính, thế giới đã trở thành một ngôi làng
nhỏ mà trong đó mọi quan hệ giao lưu, trao đổi thật dễ dàng, nhanh chóng
Khi đó, những cách biệt địa lý và thời gian không còn là trở ngại nữa, chỉ cần
vài thao tác quen thuộc trước chiếc máy tính, bạn đã có thể làm một cuộc
viễn du khắp nơi trên thế giới
Ứng dụng mạng Internet toàn cầu đã làm cho Công nghệ Thông tin được phát triển mạnh mế trong những năm gần đây Internet ngày càng thay
đổi cuộc sống của con người Nó làm cho mọi người trên toàn thế giới xích
lại gần nhau hơn Do đó con người có thể tiếp thu những tư duy, kiến thức
mới một cách nhanh chóng Và cũng từ đó sự chênh lệch khoảng cách về
kinh tế, văn minh giữa các quốc gia trên thế giới ngày một ít hơn
Khoa học máy tính cũng ngày càng phát triển, ứng dụng tin học ngày càng phong phú và đa dạng trong mọi ngành nghề, mọi lĩnh vực Càng ngày
tin học xâm nhập càng nhiều vào cuộc sống, điểu này đòi hỏi cần có nhiều
chương trình ứng dụng phục vụ cho cuộc sống Chúng em chọn để tài “Xử lý
truy xuất thông tin hỗ trợ Việt ngữ ” nhằm mục đích giúp người sử dụng có
được những thông tin cần tìm một cách chính xác, đầy đủ và nhanh chóng
nhất Tạo cắm giác cho người sử dụng cảm thấy mọi sự vật gần gũi hơn và
đáp ứng được những nhu câu rất cần thiết của con người, ở bất cứ nơi đâu và
bất cứ khi nào
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 5
Trang 7GIOI THIEU NET, C#
> CHUONG I: BO KHUNG DOT NET (.NET FRAMEWORK)
> CHUONG II: GIGI THIEU C SHARP (C# )
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 6
Trang 8
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
PHANI:
GIỚI THIỆU DOT NET (.NET), C SHARP (C#)
CHUONG I:
BO KHUNG DOT NET (.NET FRAMEWORK)
I Gidéithiéu vé DOT NET
Trên thực tế ngày nay, Internet đã trở thành phương tiện cho chúng ta
làm việc, thăm bạn bè, sử dụng tài khoản ngân hàng, chơi, tán gẫu, rất thực
tế và hiệu quả nhờ vào các phần mêm được viết để thực hiện các kết nối IP
(Internet Protocol) cho WWW (World Wide Web) Các phần mềm được yêu
cầu thực hiện hàng triệu cuộc giao tiếp đữ liệu giữa các máy tính với nhau và
số lượng các cuộc giao dịch này ngày càng tăng theo sự tăng nhanh của khả
năng và sự phức tạp của Web Việc sử dụng thư điện tử, lướt trên các trang
Web, trao đổi với các cơ sở dữ liệu và sử dụng các ứng dụng phân tán ngày
càng trở nên phức tạp hơn, vì thế trình độ và kỹ thuật lập trình để tạo và bảo
dưỡng các phần mềm cũng ngày càng được yêu cầu cao hơn, tỉnh vi hơn Các
nhà lập trình chúng ta hàng ngày phải đối diện với COM, COM+, DCOM,
SP, SOAP, XML, XSL cũng như phải đọ sức với hàng tá các sách hướng
dẫn, các bộ công cụ SDK (Software Developer Kit) phức tạp
Microsoft cũng như đa số trong chúng ta, đã tạo nên ngày càng nhiều các công cụ chuyên dùng Hệ điều hành hay các ứng dụng Windows đầy đủ
tính năng hơn, theo yêu cầu của kỹ thuật, công nghệ, và do đó đã thêm vào
không ít các SDK Kết quả là hệ điều hành, thư viện, công cụ trở nên không
còn khả chuyển, quá nặng nề với biết bao các mở rộng (extensions) Thế là
bộ khung NET (NET FrameWork) ra đời .NET thực sự thay đổi điều kể
trên Đó không chỉ là một bước tiến, một nâng cấp hay một hợp nhất các
công việc Mà đó chính là một điều vĩ đại, một sự dũng cảm, một cuộc bứt
phá ngoạn mục Nó định nghĩa lại tất cả mọi điều bạn đã biết về lập trình
cho máy PC, về tất cả mọi hình thù lẫn kích thước, kể cả về ngôn ngữ lập
trình trong đó
II May ao DOT NET
Một trong những thực tế về NET là bộ khung này không có cài đặt kỹ
thuật máy ảo Phần mềm chạy trên nền NET thật sự được biên dịch và chạy
ở mức mã máy tương tự như các mã đã biên dịch của các chương trình C
Quan niệm phổ biến nhưng sai lầm là NET đã dùng một ngôn ngữ trung
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 7
Trang 9
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
gian, mà thường được gọi là P-Code (Pseudo-code) Thật ra, NET cài đặt
một chế độ biên dịch nhiều tầng (multistage compilation): trước tiên, chương
trình sẽ được biên dịch sang một dạng trung gian khả chuyển và đến lúc nó
được thực thi, nó sẽ dudc bién dich tic thdi (just-in-time Compile hay con
goi 1a JIT Compile) sang dang thực thi cuối cùng (final executable form)
Mặc dù vẫn còn khá phức tạp, hệ thống này cũng đã đem lại cho các nhà lập trình vô số thuận tiện Tất cả mọi ngôn ngữ đều có một mức chung
sau khi biên dịch sơ khởi ở đạng trung gian Nhờ thế, các môđun đã được viết
từ các ngôn ngữ khác nhau như C#, Visual Basic, COBOL, FORTRAN,
Eiffel hay bất kỳ ngôn ngữ nào (sẽ được hỗ trợ trong tương lai) có thể được
tích hợp vào trong một ứng dụng duy nhất Lý do của sự thể này là một
môđun một khi được biên dịch ở dạng ngôn ngữ trung gian (Intermediate
Language hay gọi tắt là IL) sẽ được đóng gói với tất cả mô tả của mình Các
giao diện, thuộc tính, phương thức và các lớp của nó được mô tả bằng siêu dữ
liệu (metadata) Tất cả những thông tin này sẽ dễ dàng đọc được bởi các môi
trường lập trình nhanh RAD (Rapid Application Development Environment)
như Visual Studio.NET
Khi trình thực thi, NET được gọi để chạy một chương trình đã được chuyển đổi sang dạng IL, nó sẽ gọi một trình biên dịch tức thời (JITer) để
biên dịch đoạn IL đó sang mã máy hoàn toàn để thực thi trên bộ vi xử lý của
máy Trình JITer làm việc rất nhanh và hiệu quả, cả ở việc không biên dịch
các phần không được dùng đến của mã lệnh IL Hiển nhiên là việc biên dịch
cũng cần đến thời gian và phụ thuộc vào việc chúng ta xác định thời gian nạp
(load time) chương trình hay tính khả chuyển (portability) cái nào sẽ cần
hơn Và khi ta quyết định tính khả chuyển không quan trọng, hệ thống sẽ
cung cấp một trình biên dịch pre-JIT cho phép ta chuyển đổi IL thành mã
máy thường trực, coi như tạo nên các tập tin thực thi.EXE hay COM quen
thuộc
Minh họa dưới cho thấy các tầng của bộ khung NET, được xem xét bởi một lập trình viên Bộ khung NET hiện nay cung cấp 4 ngôn ngữ riêng:
C#, Visual Basic, C++ với bộ tự quản mở rộng (managed extension) và
JScript Một vài ngôn ngữ khác được phát triển bởi các công ty khác như
Fujitsu với COBOL,
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 8
Trang 10
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
Trình bién dich (Compiler)
Ngôn ngữ trung gian IL
JIT Compiler | econoJIT Compiler | preJIT Compiler
File thuc thi exe
(OS) NET Common Language Runtime
II Quản lý bộ nhớ DỌOT NET
Một trong những đặc điểm quan trọng nhất của NET là trình quản lý
bộ nhớ thực thi của nó hoạt động như một hệ thống thu gom rác (garbage-
collected system viết tắc là GC system) Trong C và C++, nếu một đối tượng
được lập ví dụ cụ thể, bộ nhớ mà nó sử dụng cần được giải phóng trước khi
có thể dừng lại Nếu không thể thực hiện điều này, ta sẽ bị “rò rỉ bộ nhớ” —
hệ thống không thể thu hổi bộ nhớ rỗng, khả năng vận hành của ứng dụng
hiển nhiên bị xuống cấp CLR (.NET Common Language Runtime — tạm
dịch là trình thực thi ngôn ngữ phổ quát) giải quyết sự cố này bằng cách thực
thi một bộ gom rác Theo quãng thời gian định kỳ, bộ gom rác sẽ kiểm tra tất
cả các tham chiếu đối tượng và phóng thích bộ nhớ được lưu giữ bởi các đối
tượng đã hết phạm vi hoạt động và có thể không còn ứng dụng truy cập Điều
này miễn cho lập trình viên khỏi phải hủy các đối tượng tường minh và giải
quyết sự cố rò rỉ bộ nhớ
Trình quản lý bộ nhớ của NET đã tiếp cận việc định vị bộ nhớ theo một cách khác Một khối bộ nhớ được tự động ghi nhớ thông tin khi nó được
yêu câu cấp phát cho đối tượng và có những tham chiếu đến nó Chỉ khi tất
cả các tham chiếu đến khối nhớ được xoá thì đối tượng hay vùng nhớ mới bị
hủy thật sự Cách giải quyết như thế thật sự đã giảm nhẹ gánh nặng quản lý
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 9
Trang 11
GVHD: Thầy Nguyễn Chánh Thanh SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
bộ nhớ cho lập trình viên Bạn không còn cần phải nhớ là đã xoá vùng nhớ
đã cấp hay chưa: đơn giản là từ nay bạn chỉ cần biết là bạn không còn dùng
nó nữa Một lớp sẽ không còn phải chú ý theo dõi lượng tham chiếu đến nó
nữa, nó đã biết được khi nào nó sẽ tự mình hủy bỏ
Để giảm sự phân mảnh của vùng nhớ động (heap), trình GC cũng đã
hướng mục tiêu vào việc củng cố các vùng bộ nhớ đang sử dụng hay các
vùng nhớ tự do chưa được dùng đến Điểu này ngăn ngừa bộ nhớ bị mất vô lý
và nâng cao hiệu quả của một hệ máy chủ Heap được quản lý cũng chắc
chắn rằng tất cả các truy xuất bộ nhớ không chuẩn, như tràn bộ nhớ hay treo
máy, sẽ không thỂ tác động đến dữ liệu của chương trình khác đang chạy
trên cùng máy này Và như thế nó làm cho hệ thống trở nên tin cậy và bảo
mật
Bộ GC thường bị coi là chậm và không hiệu quả nhưng Microsoft đã
quả quyết rằng GC của NET sẽ khác, nó thật sự hoạt động theo thời gian
thực GC của NET sẽ hoạt động tức thời và không tác động đáng kể lên bộ
vi xử lý (CPU) Tổng quát, trên một máy Windows 2000, GC chỉ cần khoảng
1/1000 tổng thời gian xử lý của CPU
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 10
Trang 12
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
CHUONG II:
GIGI THIEU C SHARP (C#)
I Téng quan vé C#
C# khởi đầu với tên gọi là Cool vào khoảng năm 2000, nó đã tạo ra vô
số các cuộc tranh luận lớn trên nền NET từ các huyền thoại, các đồn đại và
các ước đoán C# ngày nay đã thật sự trở thành một ngôn ngữ đơn giản, hoàn
toàn hướng đối tượng và rất tuyện vời Các đặc trưng này của C# cũng gần
giống với những tuyên bố của Java? Dù có hay không thì rõ ràng các nhà
thiết kế C# đã rất muốn tạo ra một ngôn ngữ có thể làm vừa lòng giới lập
trình C++ C# rất dễ đáp ứng với họ và có không ít các cấu trúc gần giống
như C++ Dĩ nhiên ta cũng không loại trừ sẽ có vài thiếu sót nhỏ nào đó mà
đối với một số người thì chúng trở nên bất cập và không tiện lợi
C# không hỗ trợ đa thừa kế (multiple inheritance): một lớp (class) của
C# có thể được khai báo là nó có thể dựng nên 1 hay nhiều các interface
(giao diện hay giao tiếp), nhưng tính đa kế thừa của các lớp (classes) cơ bản
lại không được chấp nhận Đối với một số lập trình viên đặc biệt là những ai
yêu thích ALT, thì tính chất này được xem là một bất cập
Chúng ta có thể nói thêm về C# là một ngôn ngữ hoàn toàn hướng đối
tượng (totally object-oriented) C++ bắt nguồn từ C: trước hết, đó là một sự
bổ sung phức hợp cho C, sau đó là một cố gắng thực sự của định hướng đối
tượng Để tốt hơn, C++ phải giữ lại một số đặc điểm của ngôn ngữ không-
hướng-đối-tượng: đó là những hàm độc lập và các biến toàn cục C# thì khác,
nó tuyệt giao hoàn toàn với các đặc tính như thế Mọi kiểu biến, kể cả kiểu
giá trị đơn giản, đều được xem xét như là một đối tượng Mọi hàm đều phải
thuộc một lớp (class) Không còn được dùng các biến toàn cục Tuy thế, xin
đừng lo lắng, vì các lớp chứa các hàm tĩnh hay biến tĩnh có thể được xem và
hành động như các hàm độc lập và các biến toàn cục
Il Hệ thống kiểu trong C#
Trong kiến trúc NET có một hệ thống kiểu chung được sử dụng để
cho phép tất cả các ngôn ngữ nhằm vào môi trường NET thao tác liên kết
nhau C# sử dụng hệ thống kiểu cơ sở này Chúng ta đã nói rằng mọi thứ
trong C# là đối tượng Điều này hầu như đúng cho cả kiểu đữ liệu Các kiểu
dữ liệu đơn nguyên như int, char không được xem là đối tượng, lý do để bảo
đảm tính hiệu quả Bởi vì các đối tượng được cấp phát trên heap và được
quản lý bởi GC (bộ thu gom rác), điều này sẽ đưa ra một ý nghĩa quan trọng
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang II
Trang 13
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
về toàn bộ mối quan hệ của các kiểu cơ sở chẳng hạn như int, char cùng với
những kiểu đối tượng mới Vì lý do này, C# cài đặt các kiểu đơn nguyên
(primitive type) ở dạng struct, được coi như là các kiểu giá trị (value type)
Trong C#, kiểu giá trị được cấp phát trên stack (ngăn xếp), thời gian sống
của chúng bị giới hạn trong phạm vi mà chúng khai báo
Trừ kiểu chuỗi String ra, tất cả các kiểu được trình bày trong bảng
được cài đặt như một cấu trúc struct Kiểu String trong thực tế được cài đặt
như một lớp đóng dấu (sealed) Một lớp sealed là một lớp không cho phép kế
thừa và vì thế nó là đầu cuối của mắt xích kế thừa
obJect Lớp cơ sở của tất cả các đối tượng trong C#
string Dãy các ký tự ở dạng Unicode
sbyte Nguyên có dấu 8-bit
short Nguyên có dấu 16-bit
Int Nguyên có dấu 32-bit
Long Nguyên có dấu 64-bit
Byte Nguyên không dấu 8-bit
Ushort Nguyên không dấu 16-bit
Uint Nguyên không đấu 32-bit
Ulong Nguyên không dấu 64-bit
HI Các khái niệm lập trình
1 Không gian tên (namespace)
Trong những năm gần đây, sự hình thành của không gian tên
(namespace) tham gia một vai trò trọng đại vào công nghệ phần mềm và
phát triển thành phần Không gian tên (namespace) hỗ trợ cho sự cô lập và
việc đóng gói các lớp (classes), các giao diện (interfaces), và các struct có
liên quan thành một đơn vị (unIt)
Kiến trúc NET sử dụng các không gian tên (namespaces) lồng nhau xuất phát từ không gian tên (namespace) System Microsoft cũng đã cung
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 12
Trang 14
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
cấp các lớp va các giao diện được đặt dưới không gian tén (namespace)
Microsoft dành cho chức năng riêng biệt của Windows Khi việc phát triển
các thành phần cho nền tảng NET, bạn sẽ sử dụng tên công ty của bạn như
không gian tên (namespace) ở phía ngoài nơi mà chứa tất cả các lớp, các
giao điện, và mã thành phần của bạn
Một khai báo không gian tên (namespace) sẽ đứng trước bất cứ mã
lệnh nào mà bạn phát triển, mặc dù điểu đó không cần thiết Cú pháp cho
việc khai báo một không gian tên (namespace) là như sau:
Namespace some-namespace-name { /ƒ các lớp (class), các giao điện, các struct,
}
Sử dụng các thực thể bên trong một không gian tên (namespace) có
thể được thực hiện hai cách khác nhau Cách dễ nhất để truy cập các thực thể
bên trong một không gian tên (namespace) là sử dụng chỉ thị using Xem xét
không gian tên (namespace) System, cái mà đã được using System;
Chỉ thị này chỉ thị cho trình biên dịch sử dụng không gian tên (namespace) System để xác định tên của các lớp được dùng trong thân của
đoạn mã (code)
Sự lựa chọn thứ hai là sử dụng tên đầy đủ của một thực thể riêng biệt
Ví dụ, lớp Console tổn tại bên trong không gian tên (namespace) System
Thay vì sử dụng chỉ thị using, nó có thể dùng tên đầy đủ để thay vào, như
được trình bày sau đây:
System.Console.WriteLine (“Fully Qualified name Access”);
2 Các phát biểu lệnh (Statements)
a Phát biểu if
Một trong những câu lệnh điều khiển cơ bản nhất là phát biểu ¡f Rất đơn giản, phát biểu if sẽ xác định giá trị của một biểu thức luận lý Kết quả
của biểu thức luận lý sẽ cho biết là chương trình có thực hiện một dòng mã
hay một đoạn mã hay không Khi kết quả nhận được từ biểu thức là true, các
phan tử mã bên trong của lệnh if sẽ được thực hiện Khi kết quả của biểu
thức điều kiện là false, đoạn mã bên trong lệnh ¡f sẽ không được thực hiện
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 13
Trang 15
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
giá trị Boolean Trong ngôn ngữ C và C++, bất cứ biểu thức nào có giá trị
khác 0 đều xem như là true và giá trị 0 thì được xem là false C# sẽ thực hiện
việc kiểm soát kiểu nghiêm ngặt và yêu câu biểu thức điều kiện phải luôn là
một trong hai giá trị là true hoặc false
b Phát biểu if else
Cấu trúc if else đơn giản chỉ là phần mở rộng của phát biểu chuẩn if
Mệnh để if chỉ cho phép thực hiện phần mã bên trong khi biểu thức điều
kiện có kết quả là true, mệnh để else cho phép thực hiện phần mã bên trong
khi kết quả của biểu thức điều kiện là false
3 Toán tử điều kiện( Condition operator)
Toán tử điều kiện có thể được xem như là một hình thức khác của phát
biểu if else Nó rất tiện lợi khi muốn gán giá trị cho biến dựa trên một vài
biểu thức điều kiện
Toán tử điều kiện có cú pháp như sau:
Result = condition-expression ? true expression : false expression
Luôn nhớ là C# yêu câu tất cả các biểu thức điểu kiện có kết quả là kiểu Boolean
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 14
Trang 16
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
a Phát biểu switch
Nhiéu khi cần phải xem xét một vài điều kiện và chọn lực thực hiện
theo nhiều chọn lựa hay trường hợp Đây chính là vai trò của phát biểu
switch Với một vài biểu thức cần định giá trị, phát biểu switch có thể được
sử dụng để chọn ra đúng trường hợp để thực hiện Hãy xem phát biểu switch
như là cách thể hiện việc thực hiện dựa trên nhiều chọn lựa thay vì phải sử
dụng nhiều câu lệnh if lổng nhau
Phát biểu switch bao gồm một biểu thức để xác định giá trị và một hay nhiều hằng số giá trị, đại điện cho các trường hợp có thể xảy ra
switch (expression)
{
case constant —expression:
statement (s) jump statement [default: statement; jump -statement]
Phát biểu for là một trong những phát biểu lặp cơ bản nhất Những
trường hợp số lần lặp được xác định trước, sử dụng phát biểu for là rất thuận
tiện Tương tự như trong C và C++, phát biểu for bao gồm giá trị khởi tạo,
một biểu thức điểu kiện và mệnh đề điều khiển lặp
Cú pháp của phát biểu for như sau:
for (initialzation; conditional —expression; iteration (s))
statement;
initialzation là giá trị khởi tạo, có thể là một danh sách các khai báo
và gán giá trị cho biến, được phân cách bởi dấu phẩy
conditional-expression là biểu thức điều kiện phải có giá trị là kiểu Boolean và được sử dụng để xác định khi nào vòng lặp for có thể kết thúc
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 15
Trang 17
GVHD: Thay Nguyén Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
iteration 1A ménh dé diéu khiển việc lặp, nó thường dùng để tăng hay giảm các biến điều khiển được sử dụng bởi phát biểu for
c Phát biểu while
Phát biểu while cho phép thực hiện lặp câu lệnh ở phần thân khi biểu
thức điều kiện cho giá trị là true
While (condition-expression)
Statement;
Phát biểu while hoạt động như sau:
- _ Biểu thức điều kiện được kiểm tra
- Nếu biểu thức điều kiện có giá trị là true, câu lệnh phần thân
(body) sẽ được thực hiện
- _ Việc này sẽ tiếp diễn cho đến khi điều kiện trở thành false
- Khi điều kiện có giá trị false, phát biểu được kết thúc và
chương trình chuyển đến thực hiện câu lệnh kế tiếp
Vì lý do này, phần thân của phát biểu có khả năng sẽ không được thực
hiện lần nào Nếu điều kiện là false, phần thân của phát biểu sẽ không được
nhất là một lân Điều này tương ứng với việc biểu thức điểu kiện được kiểm
tra ở cuối của mỗi lần lặp chứ không phải là ở phần bắt đầu
e Phat biéu foreach
Cú pháp của phát biểu foreach
foreach(element_type variable in expression)
Statement;
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 16
Trang 18
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
element_type là kiểu dữ liệu được sử dụng trong việc khai báo biến
expression có thể là một mảng (array) hay một lớp tập hợp (collection
class) chứa các phần tử có kiểu element_type
4 Toán tử (Operators)
Toán tử là phép toán được áp dụng cho các kiểu cơ sở hay kiểu đối
tượng object Toán tử cung cấp việc thực hiện các phép tính Toán tử một
ngôi (unary operator) là toán tử thực hiện trên một toán hạng duy nhất Toán
tử hai ngôi (binary operator) cần phải có hai toán hạng, bên phải và bên trái
Toán tử quan hệ (relational operator) có dạng là biểu thức Boolean có thể
được dùng để tạo những biểu thức điều kiện Bảng sau chứa tất cả các toán
Tạo đối tượng new
Thông tin kiểu is
Chuyén kiéu (Type) Variable, as
Các toán tử trong C#
5 Mảng (Array)
Trong C#, Array (mảng) là đối tượng khá đặc biệt Tất cả các đối
tượng kiểu mảng đểu được ngầm định là kế thừa từ kiểu dữ liệu
System.Array Lớp cơ sở System.Array cung cấp rất nhiều phương thức được
sử dụng trong quá trình thao tác trên mắng Array cũng cho phép kiểm tra chỉ
mục (index) Có nghĩa là khi có sự truy xuất đến một chỉ mục không hợp lệ,
ví dụ như là chỉ mục ngoài khoảng xác định (out of range), sẽ phát sinh một
ngoại lệ exception Đối với C và C++, một mảng đơn giản sẽ không bị kiểm
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 17
Trang 19
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
tra phạm vi và có thể dẫn đến việc ghi đè (overwrite) lên vùng stack hay
vùng nhớ động heap C# thì không như vậy
Việc khai báo một biến mảng thoạt tiên có vẻ hơi khó hiểu, nhưng khi phân tích lại cú pháp, bạn sẽ thực sự nhận thấy khai báo như vậy sẽ rõ rằng
hơn cách khai báo mảng trong C và C++
Cú pháp sau đây được sử dụng để cấp phát một mảng cấp l:
Array-type[] var = new array-type[size]
Chú ý là dấu móc vuông ở ngay kế kiểu của mảng (array-type) chứ không phải ngay sau tên biến Cú pháp này làm cho việc khai báo rõ ràng
hơn là đặt dấu móc vuông ngay sau tên biến
Mảng trong C# sử dụng chỉ mục đếm từ 0 Những ngôn ngữ như
COBOL và Visual Basic sử dụng chỉ mục đếm từ 1
Mảng Array trong C# không nhất thiết là mảng một chiều Khai báo mắng nhiễu chiều đơn giản là chỉ định chiều dài cho mỗi chiều Điều khá
quan trọng là bạn phải chú ý rằng mảng không nhất thiết phải là vuông vức
Các chiều có thể có những chặn trên khác nhau
IV Lớp (class)
Lớp hay còn gọi là class là sự gói gọn các dữ liệu và các phương thức (method) hoạt động trên dữ liệu đó Trong C#, lớp được xem là kiểu đữ liệu
tham chiếu (reference), và như vậy, các thể hiện (instance) của lớp sẽ được
chứa tại vùng nhớ heap và quản lý bởi GC (bộ thu gom rác) Khi một thể
hiện của lớp được tạo, bộ nhớ sẽ phân phối vùng nhớ tương ứng trên heap và
các tham chiếu đến đối tượng sẽ bắt đầu được đếm Khi số đếm tham chiếu
bằng 0, GC sẽ phục hổi lại vùng nhớ bị chiếm bởi đối tượng và trả bộ nhớ
sang trang thai san sàng để sử dụng
Lớp có thể chứa các fields (trường), methods (phương thức), events
(sự kiện), properties (thuộc tính) và các lớp lổng nhau Lớp cũng có thể kế
thừa từ những lớp khác và phát triển đa giao diện (multiple interfaces)
Mức độ bảo vệ mặc định của lớp là private Lớp có thể khai báo các thành phần là public, protected, private, internal hay protected internal
Khai báo một lớp bao gồm các điểm sau:
[attributes] [access modifier] class class-name [: [base-class], [interface]*]
Trang 20
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
Dấu ngoặc vuông cho biết đây là phần các tùy chọn, không bắt buộc
phải khai báo
Bảng dưới đây trình bày các bổ từ truy xuất qui định tầm ảnh hưởng
của chúng đối với các biến trong lớp
public Tất cả các mã đều thấy được
protected Chỉ có thể thấy được ở lớp hiện tại và lớp kế thừa
private Chỉ thấy được ở lớp hiện tại
internal Chỉ thấy được ở gói (assemply) hiện tại
protected internal Chỉ thấy được ở gói hiện tại và của kiểu dẫn xuất từ lớp
Bảng truy xuất cập nhật các thành phần của lớp
1 Đối tượng (object)
Mọi lớp trong C# đều được dẫn xuất từ lớp System.Object Bởi vì tất
cả các lớp đều dẫn xuất từ một lớp cơ sở chung, khả năng tạo một lớp tập hợp
như collection tổng hợp của các lớp, trổ thành điều không cần thiết Mỗi thể
hiện của một lớp có thể được xem như là một thể hiện của System.Object
Lớp System.Object cũng cung cấp một số dịch vụ cơ bản được các lớp khác trong kiến trúc NET sử dụng Ví dụ, phương thức Console.Write sẽ
dùng phương thức ToString của lớp để trình bày nội dung lớp ra màn hình
Do đó bất kỳ lớp nào trong C# cũng có thể định nghĩa chồng lên ToString và
cung cấp phát triển tùy chỉnh đặc biệt đối với lớp
Bảng dưới đây liệt kê một số phương thức cơ bản của lớp ObJect
Equal(Object) Phép so sánh kiểu Boolean -
Finalize Tương ty nhv destructor cia C++
ToString Chuyển đổi lớp sang dạng string
Lớp System.Object
Lớp cơ sở System.Object còn cung cấp thêm một số phương thức về
thông tin kiểu (type information), phản chiếu nội dung lớp (reflection), và
sao chép (cloning)
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 19
Trang 21
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
2 Phương thức (Method)
Trong thuật ngữ của lập trình hướng đối tượng, một phương thức
(method) là một hành động của đối tượng Phương thức có thể được tạo ra và
gọi từ thể hiện của đối tượng hoặc là phương thifc tinh (static) cd thể được
gọi trực tiếp từ một lớp Một phương thức gọi bằng thể hiện của đối tượng
cần phải tạo ra đối tượng trước khi có thể sử dụng phương thức Tuy phương
thức tĩnh không cần đến việc khởi tạo đối tượng, nhưng nó không thể truy
xuất đến các dữ liệu thành phần của lớp
Phương thức cũng giống như dữ liệu thành phần, nó cũng có thể có
những bổ từ truy cập áp dụng Ví dụ, phương thức public cho phép user gọi
trực tiếp, nói cách khác, đó là phương thức dùng chung Phương thức
protected chỉ được sử dụng bởi chính đối tượng hay những đối tượng dẫn xuất
từ đối tượng đó Phương thức private chỉ có thể truy xuất bởi lớp đã khai báo
phương thức Các lớp dẫn xuất không thể sử dụng phương thức private của
lớp cơ sở
3 Truyền tham số
Mỗi ngôn ngữ đều có cú pháp định nghĩa là một tham số được truyền
theo tham trị - một bản sao của tham số được đặt vào stack khi gọi — hay
tham biến — một bí danh (alias) của biến được đặt vào stack khi gọi Trong C
và C++, bạn có thể truyền một tham số bằng tham trị, tham biến, con trỏ
(pointer) Lập trình viên Visual Basic biết rằng các tham số được truyền mặc
định là tham biến và khi muốn tham số được truyền là tham trị thì phải chỉ
định rõ ràng
C# không chỉ hỗ trợ việc truyền tham số bằng tham trị hay tham biến
mà còn cho phép sử dụng thêm chỉ dẫn như in và out Những chỉ dẫn này
cũng tương tự như in và out dùng trong COM
Trong C#, các kiểu giá trị như đơn nguyên (primitive type), struct
được truyễn bằng tham trị, trừ khi bạn chỉ định khác đi Khi tham số được
truyền bằng tham trị, một bản sao cùng kiểu giá trị sẽ được tạo ra Phương
thức sẽ nhận tham số được truyền và sử dụng để sao chép hay thay đổi giá
trị Tuy nhiên, tham số không hể có sự liên hệ với thế giới bên ngoài Nếu
một phương thức thay đổi giá trị của tham trị, ảnh hưởng chỉ có tác dụng
trong bản thân phương thức Những kiểu tham chiếu như lớp hay giao diện
interface, được truyền bằng tham biến, không thể truyền bằng tham trị Dé
truyễn một kiểu giá trị như là tham biến, chúng ta sử dụng từ khoá ref Khi
một tham số được truyền như tham biến cho một phương thức, phương thức
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 20
Trang 22
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
có thể thay đổi giá trị và việc thay đổi này có ảnh hưởng thực sự đến
tham số, điều này phát sinh ra hiệu ứng lề (side effect)
1 Thuộc tính (Properties)
Trong thế giới C++ và COM, Property có ý nghĩa đơn giản là những phương thức assessor (lấy giá trị) và setter (đặt giá trị) Trong COM, những
phương thức này sẽ là put_T và get_T trong đó T là tên thuộc tính Lập trình
viên visual basic ngay lập tức sẽ thấy quen thuộc với khái niệm thuộc tính
này bởi vì cũng có những phương thức tương tự
C# cho phép thuộc tính có thể chỉ đọc (read only), chỉ ghi (write only) hay vừa đọc vừa ghi (read/write), trong đó thuộc tính chỉ ghi ít khi được
dùng
Cấu trúc khai báo một thuộc tính property có cú pháp như sau:
Access-modifier return-type PropertyName { [get {statement;}]
[set {statement;}]
}
Thuộc tính cung cấp cú pháp đơn giản để truy cập các yếu tố trong
một lớp trong khi vẫn quan tâm đến việc cài đặt ở bên trong
I _Ké thiva (Inheritance)
Kế thừa là khái niệm then chốt của thiết kế trong các ngôn ngữ hướng
đối tượng Kế thừa cho phép những chức năng (funtionality) và thuộc tính
(attributes) dùng chung ở trong lớp cơ sở (base class), và những lớp chỉ định
có thể kế thừa những chức năng của lớp cơ sở C# chỉ hổ trợ kế thừa đơn
(single inherit) C++ cho phép đa kế thừa (mutiple inheritances) và nếu được
sử dụng đúng cách, đây thực sự là điểm rất mạnh Tuy nhiên, phải thừa nhận
là đa kế thừa rất khó quản lý và như vậy cũng rất khó áp dụng Đây là một
trong những lý do C# chỉ phát triển kế thừa đơn
H Đa hình (Polymorphism)
Trong thuật ngữ lập trình hướng đối tượng, khả năng ghi đè phương
thức của lớp cơ sở và cung cấp một phát triển khác ở trong lớp dẫn xuất là
mot h & ehiban que: ái niệm đa hình
Trang 23
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
C# cung cấp từ khóa virtual để chỉ rõ là phương thức có thể bị các lớp dẫn xuất ghi đè (overridden) Một lớp dẫn xuất có thể ghi đè phương thức
virtual bằng cách sử dụng từ khóa override
Sức mạnh thực sự của đa hình (polymorphism) thể hiện khi kiểu của
đối tượng (object type) chưa xác định ở thời điểm biên dịch chương trình
Điều này cho phép thông tin kiểu lúc thực thi (runtime type) được sử dụng để
xác định phương thức thực sự được gọI
IH Giao diện (Interfaces) hoặc giao tiếp
Giao diện cung cấp hình thức trừu tượng hóa rất thuận tiện cho việc
phát triển theo phong cách xây dựng theo thành phần cơ sở (component-
based) Interfaces cung cấp những thỏa thuận chung cho phép các thành
phần làm việc với nhau
Một interface không phải là một lớp, và do đó, cũng không có bất cứ
mã cài đặt nào Một interface chứa các khai báo của các thành phần
(members) và các phương thức (methods), trong đó tất cả đều phải khai báo
public C# cho phép cả struct và lớp cài đặt một hay nhiều interfaces Diéu
này khác hẳn việc kế thừa Kế thừa là việc cài đặt một lớp từ lớp cơ sở, còn
cài đặt interface thì chỉ xác định ra rằng lớp sẽ phát triển một interface đặc
biệt, và cam đoan sẽ hoàn thành interface nhu da dé ra
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 22
Trang 24
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
PHAN IL:
GIGI THIEU XML, WEB SERVICES
> CHUONG II: GIGI THIEU XML
> CHUGONG IV: GIGI THIEU WEB SERVICES
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 23
Trang 25L Giới thiệu về công nghé XML (Extensible Markup Language)
XML là ngôn ngữ được định nghĩa bởi tổ chức mạng toàn cầu (World
Wide Web Consortium) Tổ chức này thường được viết tắt theo cách chơi chữ
là W3C với địa chỉ Internet đặt tại http://www.w3c.org Đây là một tổ chức
quốc tế định ra các chuẩn của Web và Internet
Tương tự như ngôn ngữ HTML, XML là một ngôn ngữ định dạng trên
cơ sở thuần tài liệu (text-based) Trên thực tế, cả hai đều xuất phát từ ngôn
ngữ dinh dang nguyén thiy goi 14 SGML (Standard Generalized Markup
Language) SGML đã ra đời trước cả Internet và chủ yếu dùng trong công
nghệ in ấn hoặc những tài liệu liên quan đến chính phủ Ngược lại, XML
được phát triển trên khuynh hướng hợp lý và dễ đọc, dễ hiểu đối với thế giới
thực hơn XML định nghĩa dữ liệu dựa trên các thẻ (tag) Thực tế, XML có
rất ít các thẻ trong bản thân ngôn ngữ
Thay vào đó, XML đưa ra tập các quy tắc để bạn tự định nghĩa các thẻ cho riêng mình hoặc sử dụng các thẻ do người khác định nghĩa (như các tổ
chức công nghiệp, phần mềm, ngân hàng, kế toán, tài chính .)
XML rat uyén chuyển, bởi vì nó bao gồm cả khả năng cho phép bạn
tự định nghĩa các quy tắc thể hiện nội dung tài liệu gọi là DTD (Data Type
Definition — tạm dịch “định nghĩa kiểu tư liệu”) Một sự thay thế khác cho
DTD là lược đồ XML (hay XML Schema)
Một tài liệu XML có rất ít các qui tắc áp đặt lên nó Một quy tắc quan
trọng nhất mà chúng ta cần nhớ đó là tài liệu XML phải hợp khuôn dạng còn
gọi là well-formed
Tính hợp lệ thể hiện ở chỗ là thẻ XML phải tuân thủ theo khai báo
DTD hay lược đồ Schema trong khi hợp khuôn dạng lại tập trung vào cú
pháp định nghĩa thẻ, ví dụ như thẻ mở phải có thẻ đóng, các thể không được
lồng chéo nhau
Tài liệu XML có thể được chuyển đổi (transformed) sang khuôn dang
khác Hình thức chuyển đổi thường sử dụng nhất là biến dữ liệu và định
nghĩa thẻ trong tài liệu XML thành cú pháp thể hiện của HTML
XML có thể lưu thông tin ở dạng thẻ mà cụ thể là dựa vào hai thành tố
chính đó là: phần tử (element) và thuộc tính (artribute)
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 24
Trang 26
GVHD: Thay Nguyén Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
XML thường sử dụng với nhiều mục đích khác nhau trong các ứng
dụng, nhưng thông thường nhất là: lưu trữ thông tin cấu hình
- _ Truyền dữ liệu: XML là một định dạng tốt để truy xuất thông tin giữa các máy tính Bất kỳ máy tính nào nhận được nó đều có thể
đọc được nội dung chứa bên trong, không quan trọng là hệ điều hành nào, hay sử dụng ngôn ngữ lập trình gì Đây là ứng dụng quan trọng được sử dụng trong Web Services
- _ Lưu đữ liệu: XML là một thay thế tốt cho các databas nhỏ Nó cho phép tạo định dạng file đơn giản để tự mô tả
Il Tài liệu XML hiển thị như thế nào trong trình duyệt
Trình duyệt không hiển thị bất kỳ định đạng nào của XML ngoài việc đưa toàn bộ nội dung của file XML ra màn hình
Vậy thì XML có gì hữu ích hơn HTML Trong khi HTML có thể yêu
cầu trình duyệt hiển thị dữ liệu văn bản được định đạng rất đẹp thì XML tự
định nghĩa những thẻ của riêng mình để rồi trình duyệt không hiểu gì cả?
(không đúng đâu, trình duyệt hiểu và hiển thị tài liệu XML theo cấu trúc rất
đẹp đấy) Tuy nhiên, phải làm cách nào đó để trình duyệt hiểu được thẻ
XML do ta định nghĩa Thay vì đưa toàn bộ nội dung tài liệu ra
Rất nhiều người khi mới đến với XML đểu than phiển rằng XML
không tạo ra cái gì đó hấp dẫn và đẹp như HTML cả? Đơn giản chỉ để định
nghĩa các thẻ thôi sao? Muốn trình duyệt hiểu các thé do ta định nghĩa va
hiển thị chúng có hai cách:
e Cách thứ nhất có thể dùng bảng định kiéu (style sheet) để chỉ định
cho trình duyệt những thẻ đữ liệu nào mà ta muốn lấy trong tài liệu
và hiển thị chúng với các định đạng tương tự HTML
e Cách thứ hai là dùng ngôn ngữ lập trình như Java hay C# chẳng hạn để xử lý trích rút ra dữ liệu của các thẻ XML ngay trong mã lệnh
III Những điều tuyệt diệu về XML
#$ Dễ dàng trao đổi dữ liệu
Nếu bạn đã làm việc với máy tính trong thời gian đài bạn sẽ thấy xung quanh mình có rất nhiều định dạng file Chuyển đổi dữ liệu giữa chúng là cả
một vấn để nan giải mặc dù đã có không ít trình ứng dụng hỗ trợ Ví dụ như
file doc (Word), xls (Excel), dbf (Foxpro), mdb (Access), txt (Text file),
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 25
Trang 27
GVHD: Thây Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
rtf (Rich Text) và hiện đại nhất là html Khi bạn viết chương trình in báo
cáo chẳng hạn, bạn phải dự trù chuyển đổi và kết xuất báo cáo ra những định
đạng này Một công việc không phải đơn giản chưa kể cùng một chủng loại
file doc của Word có thể có nhiều phiên bản định dạng khác nhau Nếu dữ
liệu của file chỉ được lưu theo dạng text (.txt) thì mọi việc trở nên đơn giản
Eile text có thể đọc bởi hầu như tất cả các trình ứng dụng Mặc dù vậy file
text khó có thể bố trí dữ liệu theo cấu trúc
Trong XML, đữ liệu và định dạng được lưu ở dạng text và bạn có thể
dễ dàng cấu hình cũng như thay đổi chúng bằng các trình soạn thảo thông
thường Nếu thích, bạn có thể dùng một trình soạn thảo XML chuyên nghiệp
để soạn thảo nội dung XML Tuy nhiên, trường hợp đơn giản hơn bạn có thể
dùng ngay những trình soạn thảo kiểu notepad trong Windows để chỉnh sửa
file XML Dữ liệu và các thẻ trong XML cũng không mã hoá theo một thuật
giải đòi hỏi bản quyền nào cả
# Tùy biến ngôn ngữ định dang
Ta có thể tạo ra các ngôn ngữ định dạng tùy biến dựa trên XML, đây
là một trong những khả năng mạnh nhất của XML Khi bạn và một tập thể
nhóm thoả thuận bằng một ngôn ngữ định dạng nào đó, bạn có thể tùy biến
trình duyệt hoặc ứng dụng để nó xử lý theo ngôn ngữ định dạng của bạn
Một vài ngôn ngữ định dạng tùy biến như ngôn ngữ định dạng trong lĩnh vực hóa học (Chemical Markup Language - CML) cho phép bạn biểu
diễn các công thức hoá học và hóa trị của phân tử ở dạng đồ họa Tương tự,
thật thuận tiện nếu XML có thể diễn đạt được thông tin các ảnh đồ họa của
những thiết kế mô hình nhà và trình duyệt sẽ hiện thực lên toàn bộ ngôi nhà
của bạn dựa vào XML
Ta không thể chỉ có thể tạo ra một tập ngôn ngữ con dựa trên XML, ta còn có thể mở rộng chúng Nếu một người hay một nhóm nào đó đã tạo ra
ngôn ngữ định dạng con của XML, bạn sử dụng và cảm thấy thiếu một số
thẻ Bạn có thể thêm vào các thẻ khác, mà theo đó sẽ giúp bạn thực hiện
diễn đạt cũng như lưu trữ đễ dàng hơn
$& Dữ liệu tự mô ta
Dữ liệu trong tài liệu XML tự mô tả nội dung và ý nghĩa của nó Ví dụ
<?xml version=”1.0” encoding= ”UTF-8”? >
Trang 28
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
tin là một câu chào cùng với thông điệp là một chuỗi văn bản Cho dù mấy
năm sau, mở lại tài liệu bạn vẫn có thể hiểu được nội dung ban đầu của nó
$ Dữ liệu có cấu trúc và tích hợp
Một khía cạnh mạnh mẽ khác của XML là không chỉ cho phép lưu dữ liệu vào file XML dựa trên thé ma con tổ chức dữ liệu theo cấu trúc XML
cho phép các phần tử thẻ tích hợp với nhau tạo nên một cấu trúc dữ liệu phân
cấp hoàn chỉnh Điều này cực kỳ quan trọng khi cần đến khả năng định nghĩa
đữ liệu có cấu trúc
Thực sự, cần nhấn mạnh về tính chính xác cú pháp của ngôn ngữ
XML Trong HTML, người tạo ra trang web có thể viết các thẻ HTML hỗn
tạp không cần quan tâm đến lỗi cú pháp Các trình duyệt sẽ chịu trách nhiệm
phân tích thẻ HTML và loại bỏ những thẻ nào không hợp lệ Một số tác giả
thiết kế trang Web còn dựa vào khả năng bỏ qua lỗi của trình duyệt để thiết
kế một số hiệu ứng qua mặt trình duyệt Thật sự thì 50% các mã lệnh của
trình duyệt là dùng để phân tích và loại bỏ các lỗi cú pháp dư thừa của
HTML Với trang tài liệu HTML, nếu bạn viết sai một thể mà trình duyệt
không hiểu, thì trình duyệt sẽ bỏ qua và hiển thị các thẻ hợp lệ khác Với
XML thì không Tài liệu của bạn được kiểm tra cú pháp rất nghiêm ngặt
Trình duyệt không chấp nhận tài liệu XML của bạn viết sai cú pháp và nó sẽ
không phân tích tiếp tài iệu XML cho đến khi nào tài liệu XML hoàn toàn
đúng khuôn đạng và cú pháp Bạn phải tự bắt lỗi tài liệu thay cho trình
duyệt Bằng cách này việc xử lý tài liệu XML của trình duyệt sẽ nhanh và
hiệu quả hơn
Vậy trình duyệt sẽ kiểm tra tài liệu XML theo cách nào? Trình duyệt XML có thể thực hiện hai cách kiểm tra chính: Kiểm tra xem tài liệu XML
có hợp khuôn dạng (well-formed) và kiểm tra xem tài liệu có hợp lệ (valÙid)
hay không
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 27
Trang 29
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
> Tailiéu XML hgp khu6én dang (well-formed document)
Tài liệu hợp khuôn đạng là tài liệu tuân thủ theo những qui tắc cơ bản
về khai báo, định nghĩa tên thẻ, thuộc tính và vị trí của các phần tử thể như
đã nêu Cụ thể đó là:
Các khai báo XML cần được đặt ở dòng đầu tiên của tài liệu
Các tài liệu XML phải có một phần tử gốc phân biệt duy nhất, các phần tử khác nếu có phải là con của phần tử gốc
Phần tử thường hình thành bởi một cặp bao gồm thẻ mở (open tag)
và thẻ đóng (close tag), trừ ngoại lệ phần tử rỗng thì không cần
thẻ đóng Ví dụ <customer> </customer> là một phần tử vì nó bao gồm thể mở <customer> và thẻ đóng </customer> Thẻ đóng có
tên giống như thẻ mở nhưng bắt đầu bằng cặp ký tự </
Đóng phân tử rỗng với chuỗi đóng />: phần tử rỗng là phần tử chỉ
có một thẻ Dấu kết thẻ của phần tử rỗng phải là />, nếu không tài
liệu của bạn sẽ được xem là không hợp khuôn dạng Ví dụ
<GREETING TEXT=“Hello Erom XML”/> là một phan tử
rỗng hợp lệ
XML, qui định cú pháp phân biệt chữ hoa và chữ thường Ví dụ nếu thẻ mở có tên là <customer> thì các thẻ như </Customer> hay
<cusTomer> đều không phải là thẻ đóng của nó
Sử dụng tên thuộc tính là duy nhất: bạn không được đặt trong thẻ
các thuộc tính trùng tên Ví dụ thông tin về thẻ <PERSON> sau là
không hợp lệ bởi vì nó có đến hai thuộc tính LAST_NAME trong
thẻ:
<PERSON LAST_NAME=“Bill” LAST_NAME=‘“mk ”>
Mặc dù vậy, do bộ phận tích hợp XML phân biệt chữ hoa và chữ thường cho nên có thể đặt tên cho thuộc tính như sau mà không
gặp vần để gì
<PERSON LAST_NAME=“Bill” last_name=“mk ”>
Tuy nhiên nên tránh cách dùng này
Tên của thẻ không được có khoảng tring (cdc ky ty tab, enter, spacebar đều có ý nghĩa là khoảng trắng)
Các thé không được lổng chéo nhau Chẳng hạn, khai báo sau là không hợp lệ do thẻ <order> và <customer> lồng chéo nhau:
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 28
Trang 30
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
e_ Bọc giá trị thuộc tính bằng cặp dấu nháy
e Không được dùng các ký tự đặc biệt để thể hiện dữ liệu hay các giá trị trong thuộc tính thẻ Các ký tự <, >, &, “, * được xem là các
ký tự đặc biệt Muốn sử dụng những ký tự này chúng ta dùng chuỗi thoát (escape string) sau:
Bất kỳ một nguyên tắc nào trên đây bị vi phạm thì tài liệu của bạn
cũng được xem là không hợp khuôn dạng
> Tài liệu XML hợp lệ (valid document)
Hầu hết các trình duyệt trước hết kiểm tra xem tài liệu XML có hợp
khuôn dạng không đã Tiếp theo một vài trình duyệt có thể kiểm tra thêm
tính hợp lệ của tài liệu Một tài liệu XML được gọi là hợp lệ khi nó là tài liệu
được kết hợp với định nghĩa kiểu tư liệu (Document Type Definition - DTD)
và tuân theo chuẩn DTD
Hầu hết các trình duyệt đều kiểm tra về khuôn dạng nhưng rất ít trình duyệt thực hiện kiểm tra tính hợp lệ
IV Tài nguyên XML
XML đang hình thành và phát triển, chúng ta cần phải luôn theo dõi liên tục về nó Internet là nguồn tài nguyên vô tận có thể giúp ta điều này
Các địa chỉ tài nguyên có thể hỗ trợ và giúp ích nhiều trong quá trình tìm
hiểu về XML:
Đặc tả về XML được định nghĩa bởi tổ chức quốc tế W3C, và đây là
nơi nên ghé thăm trước tiên để biết thông tin về XML Địa chỉ của tổ chức
này chuyên về XML là http://www.w3c.org/xml
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 29
Trang 31
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
www.xml-zone.com Địa chỉ trang Web khá tuyệt vời liên quan
đến những công nghệ XML cùng các bài hướng dẫn sử dụng XML ngắn gọn dễ hiểu
msn.microsoft.com/xml Địa chỉ của nhà phát triển phần mềm nổi
tiếng trên thế giới Microsoft cũng đóng góp một phần không nhỏ cho việc phát triển công nghệ XML trong tương lai
Từ những địa chỉ trang Web trên, có thể dẫn dắt đi rất nhiều địa chỉ
tham khảo khác và bạn sẽ cảm thấy XML trở nên rộng lớn hơn bao giờ hết
V Cấu trúc của tài liệu XML
Nội dung một tài liệu XML được bố trí hay cụ thể hơn cần phải được
viết như thế nào? Có một số qui định cho tài liệu XML như: tài liéu XML
cần phải có phần đầu, phần thân, phần khai báo
Tuy nhiên, hầu hết các phần hình thành nên cấu trúc của tài liệu XML
là tùy chọn Một số phần trong tài liệu XML có thể độc lập và không phụ
thuộc lẫn nhau
1 Tài liệu (Documenf)
Tài liệu chính là tất cả những ký hiệu có bên trong tập tin XML Khi
để cập đến tài liệu XML chúng ta muốn nói đến phần nội dung và cấu trúc
của nó
2 Khai bao (Declaration)
Khai báo là tùy chọn, nếu tài liệu XML chứa khai báo, nó phải được
đặt ở ngay phần đầu của tài liệu Trước phần khai báo không được chứa bất
kỳ nội dung nào khác kể cả khoảng trắng, ký tự tab, enter không được có
thứ gì khác
Khai báo hình thành bởi các thẻ đặc biệt Thể này được bắt đầu bằng
ký tự “?' va tit xml Day 1a chi thị tiên xử lý để các bộ xử lý và phân tích
XML nhận dạng ra tài liệu Ví đụ, bạn có thể khai báo như:
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 30
Trang 32
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
<?xml version= ”1.0” ?>
Khai báo trên mang thuộc tính version, cho biết phiên bản của các qui
tic XML sé áp dụng trong tài liệu
Khai báo có thể chứa thêm một thuộc tính tùy chọn nữa đó là thuộc tính encoding Thuộc tính encoding cho biết bộ mã ký tự được tài liệu XML
sử dụng XML cho phép sử dụng một số tập ký tự chuẩn của Unicode như
UTF-8, UTF-16
Nếu không chỉ định thuộc tinh encoding thi mac định của XML qui
định sử đụng bộ mã UTF-8§ chẳng hạn, khi bạn muốn diễn dịch tài liệu XML
theo m4 UTF-16 bạn có thể khai báo như sau:
Một tài liệu XML phải bắt đầu từ nút gốc Các nút con của tài liệu
phải nằm giữa và bên trong nút gốc Nút gốc trong tài liệu XML là duy nhất
và bắt buộc Tài liệu XML có thể không có các nút con nhưng ít nhất phải có
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 31
Trang 33
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
nút gốc Có thể đặt cho nút gốc bất kỳ tên nào và sau đó thì không được đặt
tên cho các phần tử khác trùng với nút gốc
5 Không gian tên (namespace) của XML
XML cho phép tự do định nghĩa và đặt tên cho các thẻ Nếu tài liệu của bạn chỉ sử dụng riêng cho một mục đích nào đó và không cần kết hợp với
các tài liệu XML khác thì điều này không thành vấn để Tuy nhiên, một khi
các ứng dụng phát triển, tập định nghĩa các thẻ XML cần kết hợp với nhau
thì điểu này là một vấn đề Chẳng hạn, nếu tài liệu của bạn tự định nghĩa thể
mang tên <DATA> chứa dữ liệu phục vụ cho riêng ứng dụng của bạn Sau
này bạn cần tích hợp tài liệu XML của mình với các ứng dụng khác như
VML hay MathML, chẳng may nếu các ứng dụng này cũng khai báo một
phần tử mang tên <DATA> thì sao? Trình phân tích nên hiểu thẻ <DATA>
của chương trình bạn hay của các ngôn ngữ VML, MathML? Cần phải có sự
phân biệt về phạm vi hay không gian tên (namespace) mà thẻ có ý nghĩa Ở
đây ta vẫn có thể kết hợp cả hai thẻ <«DATA> vào một tài liệu XML duy
nhất nhưng phân biệt chúng bằng không gian tên Bạn dùng một định đanh
tài nguyên duy nhất (URI) để đặt cho không gian tên cần truy xuất Tất cả
các tên thẻ đi theo không gian tên phải đặt sau tên miền (định nghĩa bởi định
danh tài nguyên) và hai dấu chấm
6 Phan ti (Elements)
Phân tử là mẫu thông tin được đánh dấu bằng một thẻ nào đó Mẫu thông tin được đánh dấu bằng các thẻ của phần tử Thẻ mở của phần tử đánh
dấu nơi bắt đầu của mẫu thông tin và thẻ đóng đánh dấu nơi kết thúc
Một phần tử thông thường có hai thẻ (thẻ mở và thẻ đóng), tuy nhiên
cũng có thể chỉ bao gồm một thẻ duy nhất với dấu kết thẻ là /> Những phần
tử chỉ có một thẻ gọi là phần tử tự đóng (self-closing) hay còn gọi với tên
Trang 34GVHD: Thây Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
Khai báo là tùy
Khai báo chọn Nếu như có
với thẻ mở j
Mô hình cấu trúc của tài liệu XML
Thẻ mở bắt đầu bằng ký tự < tiếp theo là tên thẻ, thuộc tính của thẻ nếu
có và đến dấu đóng thẻ />
7 Thuộc tính (attribute)
Thuộc tính được định nghĩa và đặt bên trong thẻ mở của phần tử (hoặc
thẻ rỗng trong trường hợp phần tử không có thẻ đóng)
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 33
Trang 35
GVHD: Thay Nguyén Chaénh Thanh SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
Thuộc tính được dùng để mô tả thêm ý nghĩa cho phần tử và đôi khi
phân tử sử dụng ngay thuộc tính để chứa mẫu thông tin mà nó muốn thể hiện
thay vì đặt thông tin đó giữa thẻ đóng và thẻ mở của phần tử như khai báo:
<customer name=”A ”> </customer>
Có một thuộc tính mang tên name với giá trị của thuộc tính là A
Trong khi đó phân tử :
<item name=”X ”> quantity=”12” price=”1”/>
Có 3 thuộc tinh: name mang gid tri X, quantity mang gid tri 12 va price mang giá trị 1
Bất kể thông tin và giá trị gán cho thuộc tính là gì chúng đều phải
được đặt trong dấu bọc chuỗi là dấu nháy đơn hoặc nháy kép
VI Giao tiếp giữa C# và XML
Ta sẽ tìm hiểu hai cách C# làm cho việc dùng XML dễ dàng hơn
- _ Document Object Model (mô hình đối tượng tài liệu)
- Reader va Writer (bộ đọc và bộ ghi)
1 Document Object Model
Document Object Model (DOM) có thể nói là “một cách chuẩn để đọc
ghi XML” Hầu hết các hệ điểu hành phổ biến đều có một phiên bản DOM,
có thể sử dụng trong hầu hết các ngôn ngữ lập trình, bao gồm C# Nó là một
Application Programming Interface (API) để truy vấn các file XML
Ý tưởng của DOM là bất kỳ file XML nào có thể được mô tả dưới
dạng một cây chứa các node
Bảng sau đây mô tả các node thường được sử dụng trong file XML
XmlElement Tương ứng một element trong file XML XmlAttribute Tương ứng một thuộc tính
XmlDocument Tương ứng toàn bộ tài liệu XmlComment Tương ứng với một ghi chú trong file XML
Ghi chú trong file XML bat dau bang <!- - va kết thúc bằng - - >
Trang 36
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
Các thuộc tính Attributes Tập hợp tất cả thuộc tính của một node
ChildNodes Tập hợp tất cả các node con của node hiện
hành FirstChild Trả về node con đầu tiên của node hiện hành InnerText Văn bản chứa trong mỗi node, kể cả bất kỳ
node con nào chứa trong nó Name Văn bản bên trong hai dấu <> của node hiện
hành
NextSibing Trả về node kế tiếp (nếu có) cùng cấp với
node hiện hành
NodeType Tra vé kiéu node hién hanh
Cac phuong thifc
AppendChild Thêm một node con mới vào node hiện hành
CreateElement Tương tự như CreateNode nhưng
CreateElement chỉ dùng để tạo các element
Load Đưa nội dung của một file XML vào document
LoadXml Đưa nột dung của một chuỗi chứa XML vào
document Save Lưu nội dung của XML document vào một file
Trang 37
GVHD: Thay Nguyén Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
DOM, toan bộ tài liệu được load vào bộ nhớ Vào lúc này, DOM xây dựng toàn bộ cây mô tả tài liệu với tất cả các node, nghĩa là khi file XML có
kích thước lớn thì sẽ tốn nhiều bộ nhớ Quá trình này cũng chiếm nhiều thời
gian, đặc biệt là khi cần một hoặc hai node trong tài liệu
Với XmlTextReader và XmlTextWriter đã cải thiện được hai điều của DOM:
- Toàn bộ file không cần thiết đưa vào bộ nhớ trước khi xử lý
document
- - XmlTextReader và XmlTextWriter làm việc rất nhanh do không
cần thiết xây dựng cấu trúc cây
Tuy nhiên, XmITextReader và XmlITextWriter có một số nhược điểm
Bởi vì chúng không lưu toàn bộ file vào bộ nhớ nên đôi khi khó trong việc
liên hệ giữa một phần và các phần khác trong document
Sau đây là bảng thuộc tính và phương thức của XmITextReader
Read Đọc node kế tiếp trong XML document Mỗi
lần phương thức này được gọi đầu đọc di chuyển đến node kế tiếp
XmlTextReader được sử dụng để xây dựng tài liệu XML bang cách
thêm tag bắt đầu và kết thúc element
Tương tự, ta có bảng các phương thức và thuộc tính thường dùng của XmlTextWriter
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 36
Trang 38
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
WriteElementString Tao mot element trong tài liệu Element mới
này bao gém tag bat dau, tag kết thúc va van
bản của element Đây là phương thức nên dùng khi tạo một element đơn không có node con nào
WritStartElement Tao mét element mdi trong tài liệu Phương
thức này chỉ tạo tag bắt đầu Đây là phương thức sử dụng để tạo các node con
Trang 39
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
CHƯƠNG IV:
GIỚI THIỆU WEB SERVICES
I Web Services la gi ?
, Web Service là một mô hình chung cho các ứng dụng được trình bày
Internet dung: HTTP, XML, và SOAP Về cơ bản, ‘Web s services là mã mà
ta trình bày trong một ứng dụng có thể được truy cập cục bộ quả ‘Intranet hay
Internet: Ta ¢ có thể cho phép bất kỳ hệ khách nào truy cập Web Šrvices của
ta hoặc han ché kha năng truy cập chỉ cho các hệ khách đã được thẫm định
Web Services sẽ trình bày một giao diện để triệu gọi một phương
thức, hàm trên một hệ thống từ một hệ thống khác Để thực hiện lệnh gọi đến
phương thức này, ta dùng một trong ba giao thức Internet: HTTP GET, HTTP
POST hoặc SOAP Sau khi triệu gọi phương thức của Web Services, mọi dữ
liệu cần được trả về đều được nối tiếp hóa dưới dạng XML trong thân của
thông điệp SOAP Mô hình trao đổi dữ liệu này cho phép mọi đối tượng có
thể được nối tiếp hóa dưới dạng XML — các chuỗi, các số nguyên, các mang,
ADO.NET Datasets hoặc thậm chí các đối tượng tùy biến - được trao đổi
giữa bên cung cấp và bên tiêu thụ
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 38
Trang 40
GVHD: Thầy Nguyễn Chánh Thành SVTH:Nguyễn Văn Tảo
Nguyễn Việt Như Trúc
M6 hinh Web Service
1 Tinh chat cia Web Services
- _ Được triệu gọi thông qua XML
- Giao tiếp st dung XML truyén tải qua các giao thức Internet
(Internet Ptotocol)
- _ Có thể được gọi bởi những hệ thống khác
2 Yêu cầu của một Web Services
- Tuan thủ trên những tiêu chuẩn và phải được hỗ trợ rộng rãi
-_ Sử dụng nên tắng cơ sở hạ tầng ở mức tối thiểu Chỉ sử dụng một số chuẩn thật cần thiết để phát triển
- Cung cấp giao tiếp ứng dụng cấp thấp Phải có khả năng mở rộng
II Các chuẩn chung
Do khó khăn trong việc trao đổi đữ liệu giữa một hệ thống gốc Java
với một hệ thống gốc COM vào thời tiền Web Services, cơ chế gom chuyển
kiểu dữ liệu (data type marshaling) và những điểm không tương thích giữa
hai hệ thống đã khiến cho tiến trình đó gặp không ít rắc rối khi thực thi Vì
thế Web Services dựa vào một loạt các chuẩn chung: HTTP, XML, SOAP
Đề tài: Xử lý truy xuất thông tin hỗ trợ Việt ngữ Trang 39