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

Đồ án : Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm

85 312 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ án: Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm
Trường học University of Technology and Education
Chuyên ngành Software Development
Thể loại Đồ án
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 85
Dung lượng 5,98 MB

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

Nội dung

Đề án “Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm” bao gồm các nội dung như sau: e© Tìm hiểu về các ngôn ngữ XML, XSLT và Xpath e Tim hiéu vé cong nghé JDBC va Database Meta

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

ĐẠI HỌC KỸ THUẬT CÔNG ĐỘC LẬP - TỰ DO - HẠNH PHÚC

Khoa: Công nghệ thông tin NHIEM VỤ THỰC HIỆN LUẬN VĂN

Bộ môn: Công nghệ phần mềm TOT NGHIEP CUOI KHOA

Họ và tên : Đặng Văn Anh Tài MSSV: 103109014

Trang 3

4 Ngày hoàn thành nhiệm vụ:

5 Họ tên giáo viên hướng dẫn:

Th.s Nguyễn Chánh Thành

Nội dung và yêu cầu đồ án tốt nghiệp đã

thông qua GIÁO VIÊN HƯỚNG DẪN CHÍNH

1P.HCM, ngày thang năm 2007 (Ký và ghỉ rõ họ tên)

Trang 4

KHOA CONG NGHE THONG TIN ĐỘC LẬP - TỰ DO - HẠNH PHÚC

000

NHAN XET DANH GIA CUA GIANG VIEN HUONG DAN

DE TÀI: Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm

Sinh Viên: Đặng Văn Anh Tài Chuyên ngành: Công nghệ phần mềm

Trang 5

000

NHẬN XÉT ĐÁNH GIÁ CỦA GIẢNG VIÊN PHẢN BIỆN

ĐỀ TÀI: Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm

Sinh Viên: Dang Van Anh Tai Chuyén nganh: Céng nghé phan mém

Diém LANG SO! oe eee eee ee ete ee eteeeete teens

Trang 6

Lời đâu tiên em xin chân thành cảm ơn thầy Nguyễn Chánh Thành, người đã trực tiếp hướng dẫn em hoàn thành đô án này Nếu không có những lời chỉ dẫn, những tài liệu,

những lời động viên khích lệ của Thây thì đồ án này khó lòng hoàn thiện được

Chúng con xin chân thành cảm ơn ba mẹ, các anh chị và những người thân trong gia đình

đã nuối day, tao moi diéu kién tot nhất cho chúng con học tập và động viên chúng con

trong thời gian thực hiện đô án

Em xin chân thành cảm ơn thây Nguyễn Nghiệm đã động viên tinh thần và nhiệt tình hỗ

trợ em Irong quá trình thực hiện dé an

Em cũng xin chân thành cảm ơn các thây cô trong khoa Công nghệ thông tin, Trường Đại Học Kỹ Thuật Công Nghệ Tp Hồ Chí Minh đã tận tình chỉ bảo và giúp đỡ cho em trong

suốt thời gian em học đại học và trong quá trình em thực hiện đề án

Mặc dù em đã cô găng hoàn thành đồ án với tất cả sự nỗ lực của bản thân, nhưng đồ á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à lận tình chỉ bảo của quỷ Thầy Cô và các bạn

Tp Hồ Chí Minh, tháng 1 năm 2008

Sinh viên thực hiện, Đặng Văn Anh Tài

Trang 7

LOI NOI DAU

Ngày nay, với sự phát triển nhanh chóng của Công Nghệ Thông Tin, việc ứng dụng các sản phẩm tin học quản lý vào các nghiệp vụ của công ty là cần thiết và mang lại lợi ích thiết thực Do đó, các ứng dụng quản lý đã xuất hiện ngày càng nhiều trong các công ty, doanh nghiệp có quy mô vừa và lớn Điều này dẫn đến các công ty Tin Học luôn nhận được nhiều các đơn đặt hàng về phan mém quản lý Trong quá trình hình thành nên các ứng dụng tin học quản lý, các lập trình viên luôn phải thực hiện một số công việc mang

tính chất lặp Lý đo vừa nêu dẫn đến hiệu quả trong việc hình thành ứng dụng là không

cao, lãng phí thời gian mà chỉ phí hoàn thành sản phẩm lại lớn

Đồ án “Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm” do chính em

thực hiện, đã ra đời để phần nào giải quyết khó khăn trên Đúng như tên gọi của nó, Đồ án

tập trung vào việc tự động hóa khâu sinh mã nguồn tự động giúp giảm thiểu thời gian

thực hiện dự án phần mềm cũng như tránh các sai sót do con người gây nên

Đề án “Phát triển công cụ trợ giúp tạo nhanh ứng dụng phần mềm” bao gồm các nội dung như sau:

e© Tìm hiểu về các ngôn ngữ XML, XSLT và Xpath

e Tim hiéu vé cong nghé JDBC va Database MetaData va ResultSet MetaData

e Tim hiéu vé CMP Entity Bean

© Tìm hiểu cơ chế sinh mã nguồn tự động

e Triển khai việc sinh mã nguồn tự động để hình thành nên các CMP Entity Bean va

các đoạn mã DHTML trong việc thao tác đữ liệu thông qua cầu ndi JDBC

Tóm lại, ở phần thực nghiệm của Đồ án, em đã hiện thực được các công việc sau:

© Kết nổi thành công đến cơ sở dữ liệu để hình thành nên các tài liệu XML chứa các

thông tin cần thiết về Database MetaDafa cho ứng dụng

Trang 8

Thay đổi được các nội dung vé Database MetaData bén trong cha tài liệu XML cho phù hợp với nhu cầu sử dụng băng các công cụ chỉnh sửa thân thiện

Hình thành nên mã nguồn và các tập tin cầu hình, giúp việc đóng gói tạo nên các CMP Entity Bean triển khai trên máy chủ Jboss

Tạo ra các tập tin mã nguồn có giao diện web (DHTML) để thao tác các thông tin với cơ sở đữ liệu thông qua SQL Server

Trang 9

MUC LUC rales of.) 09 8n i I9)8\)(9)827.\EHdddddddẢẢ ii MỤC LỤC 0 S21 22212212121121211211211111111.21 1111212111212 1011101111 dkg iv CHUONG L TONG QUAN BE TAL oo cccccccccccececesscsseseesseccseseseeescsesesesescscacecesieneseeenenenees 1

In 1

12 Hurdng gidi quyét ooo 2

1.4 Các chức năng chính của chương trình RiceBox cneHeree 3

1.5 M6i trong thurc W060 oo 4

90:0019)/680/01083in)28601609001 C0177 5 II.1 Mô hình tổng quát s25 S2222522121212112121512211121211111121111111 111211 5

IIL2 Mô hình chỉ tiết ứng dụng RiceBoX 5 22: 22t 222E2121 112122 111k 6

I3 Mô hình chỉ tiết ứng dụng RiceBox khi tạo ra CMP Entity Bean §

IIL4 Mô hình chi tiết ứng dụng RiceBox khi tạo ra DHTML ¿5525555552 11 CHƯƠNG II: CONG NGHE VA UNG DUNG wo cccccccccccccessecsesneseeeeneeeeseeeeeneneeneeneaneans 14

IH.1 JDBC (Iava Database ConnectIVITy) ch HH hot 14

III.1.1 Khái niệm 2-5 S21 2222521221221221215121717127151 7171111211221 re 14 III.1.2 Các đặc điểm của JDBC API -©22: 22222 2222212211221 21221212 trree 14 HI.1.2.1.Các sán phẩm của IDBC -5-52222 522221221212 ETxrrEr.rrrerree 14

08/219 0i.0) 16

Trang 10

TULA XPath ốc 34

IIL4.1 Giới thiệu Xpath 22s tnhhhhhhhhhhhhhrrhHrrddtdrrrtrrrieiree 34

11.4.2 Cac thuat ngir trong Xpath 0 cee eee eee eee reese terrane tenes 34

IHI.4.3 Cú pháp Xpathe ccc cece eeeseeeeeees eee eseseesseseeseseseseeeeaeasenaeaceseneeees 37 VIDS DOI y oo ốố ộaann 39

IS 4 6 2 nh ố an 39

IIIL5.2 Các thuận lợi khi sử dụng Dom4[ -‹ -cs-snssehhhtttrrrtrrrrre 39

IIL5.3 Các tính năng chính 2+ nnnnhhhhthtrhtrdtrrrrttrtrrrrrrrrrrerrre 40

THL.5.3.1 Parsing XML oo .aaaa 40

II.5.3.2 Sử dụng [terators: 0.0 ccc cece ee eee te reese neces cesses teceecteneserensne rts 41

III.5.3.3 Tăng cường khả năng duyệt cây với Xpath . -: cccseo 41

IIL5.3.4 Nhanh chóng khi thực hiện thao tác lặp -nnnnrtte 42

II.5.3.5 Khả năng tạo mới một tài liệu XML -:-:s+scc‡rrrrtehiet 42

IHI.5.3.6 Lưu trữ một Document xuống tập ti1 - ete etter 43 II.5.3.7 Tạo dáng cho một Document khi kết hợp với XSLT 43

CHUONG IV: LY THUYET VE CMP VA JBOSS SERVER -s 45

IV.1.1 Định nghĩa Entity Bean - -csnnnhhrhhrtrrrrrrrdrrrdtrrrrrrrrrrt 45

IV.1.4 Thiết kế CMP Entity Bean 5: 22s 22222 tt .rrtttrrrrrrre 49

IV.1.4.1 Home Inferface - Ă 5S 2211223 3 vn 2222k tk ng h* 9911 kh he he 50

Trang 11

lIN VAN: ono Ji n ‹ố 50

l8 8ccc s‹ n — nao 55

CHƯƠNG V: HƯỚNG DẪN SỬ DỰNG -cstntHhethrrrrrrrrrrrrrri 57

MăNGr co ềnaan 57

V.2 Giao diện tạo mới một Proj€cf - - ccncéhnhhhhờthhhưhhhdHHrrdrrhtrrtrrtrdirire 59

V.2.1 Hộp thoại chọn loai Project reer esis nesses eens recat ene rentesineneiees 59

V.2.2 Hộp thoại chọn tên và nơi Jur trik Project eee ete reer reer eens 60

V.2.3 Hộp thoại cấu hình kết nối với cơ sở dit HU eee eee erence 61

V3 Giao diện chỉnh sửa CMP Entity Bean -.-. senhnrhhrrredtrrrdrrrrrree 63

V.3.1 Giao điện chỉnh sửa Entity khi vừa tạo mới P7oJeCt cceie 63

V.3.2 Hộp thoại tạo phương thức tìm ra ec ccccccccscecceceveeceeceesececcseccesceereeennenes 64

V.3.3 Hộp thoại thêm tham số cho phương thức tìm kiểm -5cscsrsrererree 65

V.3.4 Hộp thoại tạo mới phương thức tìm kiếm khi không có lỗi 66 V.3.5 Giao điện chỉnh sửa Entity sau khi chỉnh sửa và thêm phương thức tìm kiếm.

Trang 12

CHUONG VI: HUGNG PHAT TRIEN 1077 71

8 ‹ sa a 71

pc nh 71

Trang 13

I.1 Thực trạng

Hiện nay, các ứng dụng quản ly đã trở thành những trợ thủ đắc lực cho việc kinh doanh của các doanh nghiệp vừa và lớn Vì vậy nhu cầu sử dụng phần mềm tin học vào việc quản lý cho doanh nghiệp là rat lớn Nắm bắt được điều này, các công ty Tin Học đã phần nào đáp ứng được những nhu cầu cấp bách ấy Tuy nhiên trong quá trình hiện thực sản phẩm, các công ty Tin Học luôn phải băn khoăn một số vấn để sau:

« Làm việc với cơ sở dữ liệu luôn tồn tại trong mọi ứng dụng quản lý Thay vì trước kia chúng ta luôn phải bù đầu với kho tài liệu khi cần phái tìm kiếm hay thông kê một thông tin nào đó thì giờ này công việc ây chỉ được thực hiện ngay bằng vai thao tác nhắn chuột

© Mot time dung quan lý luôn đòi hỏi làm sao cho ứng dụng phải có độ chính xác cao và luôn ổn định Điều này bắt buột các lập trình viên luôn phải tập trung chú ý vào công việc mình đang làm, nhưng thực tế đôi khi không xảy ra như ý muốn, các lập trình viên mắc phải một số lỗi nào đó dẫn đến những sự sai sót đáng tiếc

e Công việc thường nhật của các lập trình viên trong quá trình tạo ra sản phẩm phần mềm tin học quản lý luôn phải thực hiện các công việc có tính chất lặp đi lặp lại như: thêm, cập nhật, xóa sửa, truy vấn, thống kê cho mỗi loại thông tin quản lý (như: sản phẩm, khách hàng, loại sản phẩm, hóa đơn ) Nguyên nhân này đã dẫn đến sự nhàm chán của các lập trình viên khi phải thực hiện các công việc lặp lại, điều đó có thể dẫn đến các sai sót mang ý nghĩa tính thần có thê xây ra

e_ Một số lý do trên đã đưa ra một hệ quả không thể nào tránh khỏi là các công ty Tin Học sẽ phải tốn nhiều thời gian cho các công việc vô ích như vậy và thêm vào đó là khoảng thời gian để sửa những sai sót đó (thường mất nhiều thời gian) Điều này cũng đồng nghĩa là chỉ phí để làm ra một sán phẩm Tin Học quán lý cũng sẽ phải cao hơn và lợi nhuận của các công ty sẽ giảm lại

Có thể nói nhìn ra được các yếu điểm cần thiết khi hình thành nên một sản phẩm Tin Học

quan lý là điều không đễ dàng nhưng để giải quyết van dé 4 ay lại là một khó khăn thực sự

Dưới đây là một hướng giải quyết có thê đem lại hiệu quả thiết thực

Trang 14

Các công việc như thêm, xóa, sửa và tìm kiếm nay sẽ không cân phải thực hiện thủ

công bởi các lập trình viên nữa Thay vào đó công việc trên sẽ được thực hiện bởi ứng

dụng hỗ trợ sinh mã tự động

Để có được mã tự động cho việc tạo ra một số mô-đun làm việc với cơ sở đữ

liệu, điều chúng ta phải làm trước tiên là phải hình thành nên một số tài liệu khuôn

mẫu chuẩn (hiện thực vấn để này là các tệp tin XSL trong ứng dụng, chúng ta có thê hiểu rõ hơn vấn đề này qua các chương IIT) Tùy theo từng loại tài liệu khuôn mẫu mà

ứng dụng hỗ trợ sinh mã tự động sẽ kết hợp với các thông tin Database MetaData tạo

ra các đoạn mã lập trình khác nhau

I3 Giới thiệu về Đề Tài

Nhìn rõ được các khó khăn đã được đề cập bên trên, em nhận thấy việc cho ra đời ứng dụng sinh mã nguồn tự động (có tên là RiceBox 1.0) là một giải pháp Là chủ nhân của ứng dụng RiceBox và sẽ là một lập trình viên trong tương lai, em mong muốn ứng dụng của mình sẽ giái quyết được phần nào khó khăn trong quá trình tạo dựng phần mềm quản

ly

Hiện thực cụ thể các vấn đề trên, ứng dụng RiceBox có các chức năng tạo ra các đoạn mã

hình thành nên CMP EntityBean để làm việc với database thông qua cầu nối JDBC trên

nên Server Jboss và các ứng dụng DHTML truy xuất dữ liệu đến với SQL Server

Các công nghệ tiên tiến như IDBC (lý thuyết về JDBC đã được để cập ở chương

II) và EIB (cụ thể trong RiceBox là CMP) là các công nghệ đang được sử dụng rộng rãi khi xây dựng các ứng dụng có quy mô lớn (được gọi là ứng dụng J2EE)

Một ứng dụng 2 lớp khi ứng dụng khách truy xuất dữ liệu sẽ đưa ra một lời yêu

cầu trực tiếp đến máy chủ (là hệ quản trị cơ sở dữ liệu của ứng dụng), việc này rõ ràng là không nên vì nhiều ly do, có thể đưa ra một vài lý do như sau: nếu có rất nhiều lời gọi

trong cùng một lúc gửi đến database, khi ứng dụng khách đang thao tác với đữ liệu thì hệ

Trang 15

quan tri dit liệu không hoạt động nữa, hoặc khi truy xuất nhiều lần với một đối tượng nào

đó trong database thì mỗi lần thao tác là mỗi lần gọi truy xuất dén database Cac ly do vừa nêu có thể được giải quyết triệt để khi chúng ta chọn một ứng dụng server và giao cho

nó quản lý các céng viée nhu connection pool (quan lý các kết nối), persistence, state (trang thai) Diéu nay cho ching ta thay viéc sir dung cac Enterprise Bean dé thao tac

với cơ sở đữ liệu thông qua server là một thuận lợi rất lớn, nhưng cùng với thuận lợi ấy là

các lập trình viên phải bỏ ra nhiều công sức hơn khi thao tác với dữ liệu

Như vậy để có thể triển khai các ứng dụng lớn có hiệu qua, chúng ta cần có máy

chủ (Server) hỗ trợ cho các thao tác nên Và việc mà chúng ta phải làm là chỉ tập trung hình thành nên các phương thức nghiệp vụ Các máy chủ có thé chon là Jboss hay WebLogic

Công việc thủ công khi hình thành nên các Enterprise Bean đòi hỏi các lập trình viên phải thực hiện rất nhiều công đoạn phức tạp như: hình thành nên cac Homelnterface,

Remotelnterface, BeanClass Cac cong doan nay phai thuc hién nhiéu 1an khi co so dit

liệu có nhiều đối tượng cần quản lý Sau đó các lập trình viên sẽ thêm vào các phương thức nghiệp vụ cho các Bean này Để có thể hình thành nên các Bean hoàn chỉnh, công

việc không thể thiếu là phải cấu hình lại các tập tin mở rộng như: ejb-jar.xml, jboss.xml,

mssql-ds, jbosscmp-Jdbc.xml (Ở đây đề cập các ứng dụng lớn khi cần sự hỗ trợ Server

Jboss)

Tóm lại, ứng dụng RiceBox được hình thành với mục đích hỗ trợ việc sinh mã

nguồn Trong khuôn khô phạm vi của đề tài, em chỉ hiện thực việc hình thành nên các mã

nguồn về CMP Entity Bean và DHTML

I.4 Các chức năng chính của chương trình RiceBox

Các chức năng chính của chương trình không năm ngoài mục đích xử lý các vân đề đã nêu bên trên Có thể nêu ra một vài chức năng như sau:

Trang 16

Tao méi project vé viée sinh ma CMP Entity Bean để thao tác với cơ sở đữ liệu

thông qua cầu nối JDBC

Tạo mới project khi cần quản lý cơ sở dữ liệu trên nên Web, các đoạn mã sinh ra

có giao diện đơn giản thực hiện các thao tác như thêm, xóa, sửa và tìm kiểm đối

tượng cần quản lý Các đoạn mã được simh ra có thể được thao tác lại đễ dàng thông qua cdc céng cu tao tmg dung web nhu: Dreamweaver, Front Page

Ứng dụng bao gồm chức năng thay đổi nội dung bên trong các tài liệu Meta và thêm phương thức tìm kiếm cho các CMP Entity Bean thông qua các công cụ có giao điện trực quan và dễ sử dụng

Cho phép mở lại ứng dụng đã tạo trước đó và tiếp tục các công việc chỉnh sửa cần

thiết

Tạo ra các tập tin chứa các đoạn mã lập trình để hình thành nên CMP Entity Bean

hay DHTML

Có thể đóng gói các tập tin liên quan để hình thành nên CMP Entity Bean, công

việc cuối cùng các lập trình viên cần làm là đeploy (triển khai) nó bang Jboss

Server

L5 Môi trường thực hiện

Hệ điều hành: Windows XP, Win 2000, Win Server 2003

Ứng dụng chạy trên nên Java jdk1.6.0_03 của Sun Microsytems

Ngôn ngữ lập trình: Java

Hệ quản trị cơ sở đữ liệu: Microsoft SQL Server 2005

Server triển khai CMP là Jboss Server phiên bản jboss-4.0.5.GA

Giao điện lập trình ứng dụng là NetBeans IDE 6.0

Trang 17

IH.1 Mô hình tổng quát ,

Thông qua cầu nói JDBC, ứng dụng RieeBox nhận các thông tin về database như: tên các khóa chính, khóa ngoại của bảng đữ liệu (table), tên các cột và loại dữ liệu (data type) của cột đó hay các thông tin về kết nối (các thông tin này thường được gọi là Database Metadata) Sau đó các thông tin MetaData này sẽ được kết hợp với các tài liệu XSL thông qua ứng dụng RiceBox để hình thành nên các tập tin mã nguồn

Hình 2.1 minh hoa cho quá trình trên

Database Management

Hình 2.1: Mô bình tông quát ứng dụng RiceBox

Mô tả:

Thông qua hình 2.1 chúng ta thây được mô hình tổng quát của ứng dụng RiceBox Ban

đầu dữ liệu vào là một cơ sở dữ liệu quan hệ, trong khi thực hiện chức năng sinh mã nguồn, RiceBox cần biết mình cần tạo ra loại mã nguồn nào, việc nhận biết này là do chúng ta đưa vào các tài liệu XSL Kết quả cuối cùng là các đoạn mã lập trình được tạo

ra Quá trình ứng dụng RiceBox thao tác với các thông tin MetaData trải qua mấy bước, chúng ta có thê thấy rõ hơn khi xem mô hình chỉ tiết ứng dụng RiceBox ở phía dưới

Trang 18

Hình 2.2 bên dưới, phần bên trong hình chữ nhật với các nét đứt đoạn là mô tả chỉ tiết các

thành phần bên trong ứng dụng RiceBox

Database

XML

Generator

Ngoài các tài liệu mẫu về việc sinh mã tự động như các tài liệu XSL Ứng dụng RiceBox

bao gồm ba thành phần chính Mỗi thành phần đảm nhiệm từng chức năng riêng biệt và

được mô tả bên dưới:

- _ XML Generator (Máy sinh XML): Có chức năng nhận thông tin cần thiết về cơ sở

đữ liệu như các thông tin về database Metadata từ đó tạo ra các tài hiện XML, mỗi

Trang 19

một thông trn metadata sẽ được lưu trữ bên trong tài liệu XML với thể hiện là các Node của một cây

- _ Edit Tool (Công cụ chỉnh sửa): Đây là một thành phần khá quan trọng trong ứng dụng RiceBox, thành phần này có chức năng chính là thay đổi các thông tin

database Metadata được lưu trữ bên trong tài liệu XML bằng các thao tác với giao

diện

- Code Generator (May sinh ma nguén): Thanh phần cuối cùng luôn được sử dụng sau khi chúng ta thực hiện xong các thành phần trên là sinh ra các mã nguồn và các

tập tin cấu hình đề hình thành nên một mô-đun của một ứng dụng quản lý

Quy trình thực hiện việc sinh các tệp tin mã lập trình như sau:

- _ Sau khi ứng dụng kết nỗi thành công với database théng qua JDBC, May sinh XML tap hop cac théng tin Metadata cần thiết về đữ liệu và chuyển các thông tin này xuống một tài hiệu XML đã có sẵn trong ứng dụng (chúng ta không lưu hết các thông tin meta vé database ma chi lay các thông tin cần thiết cho ứng dụng)

- _ Tài liệu XML trên là một tài liệu thô (chưa qua thao tác xử lý) chứa các thông tin

về database Metadata Thông qua bước hai này, các tài liệu XML sẽ được các công

cụ chỉnh sửa thay đổi nội dung bên trong Nội dung sau khi đã được thay đổi và sẽ

được lưu lại vào chính tài liệu XML này

-_ Bước cuối cùng của quy trình làm việc là sự kết hợp giữa tài liệu XML và cac XSL

thông qua Máy tạo mã nguồn Công việc này khi sử dụng thì có vẻ rất đơn giản

nhưng sẽ là rất cực khi lập trình viên phải tạo ra các mẫu XSL để có được kết qua

đó Qua đó hình thành nên các tệp tin mã nguồn cần thiết cho ứng dụng quản lý.

Trang 20

Hình minh họa 2.3 là phần chỉ tiết cụ thể của ứng dụng RiceBox trong việc tạo ra các tập

tin về mã lập trình (* java) cũng như các tập tin mở rộng (*.xml, * properties) dé anh xa với database Server thông qua máy chủ Jboss

& Entity xsl, EntityEJB-xsl ejb-jar.xsl, jboss.xsl

Generator XML

Code Generator

Mô hình này hoạt động tương tự như mô hình 2.2 nhưng chỉ khác ở chỗ là các

thành phần như: Bộ máy tạo XML, Công cụ chỉnh sửa và Máy tạo mã nguồn chỉ dành riêng cho việc tạo ra các CMP Entity Bean và các tệp tin mã nguồn mẫu XSL được thay

Trang 21

thế cụ thể bằng Entity.xsl, EntityEJB.xsl Và các tệp tin mã nguồn là các file có phần

mở rộng là *.java, *.xml và *.properties

Tài liệu XML trong hình 2.2 sẽ được thay béi ejb-jar-ex.xml, day 14 nơi chứa toàn

bộ các thông tin về đatabase (các thông tin này là những thông tin cần thiết được lấy có chọn lọc) như tên table, tên ñeld, kiểu dữ liệu và các thông tin kết nối sau khi đã đi qua

may tao XML

Cac thong tin trong ejb-jar-ex.xml tiếp tục thay đổi sau khi đã được chỉnh sửa bới các Công cụ chỉnh sửa, cụ thể ở đây là Công cụ chỉnh sửa CMP Công cụ này sẽ cho phép thay đổi nội dung các field trong CMP, tạo ra các truy vấn tìm kiếm CMP và một số chức năng khác

Bước cuối cùng là Máy sinh mã tự động sẽ trộn nội dung cac tép tin XML va XSL

dé sinh ra các tập tin mã nguồn cần thiết để hình thành nên một CMP Entity Bean Công

việc cụ thể như việc kết hợp XML và XSL bởi Máy sinh mã nguồn CMP (bạn có thê

tham khảo thêm các chương về Lý Thuyết XML và XSL)

Ví du cu thể cho mô hình 2.3 được hiện thực trong ứng dụng như sau:

Khi chúng ta có được thông tin Database Metadata về Produet (Sản phẩm) của một cơ sở

đữ liệu nào đó được lưu trữ bên trong tài liệu XML ejb-jar-ex.xml có nội dung như sau:

e»Product: vết Đập :

Trang 22

Hình thành nên một tài liệu mẫu mã nguồn XSL (XSL Template) voi tén goi EntityHome.xsl có nội dung như sau:

” byte 1

ects java tee

"1"

Bằng cách kết hợp 2 tập tin này, ứng dụng RiceBox có thể sinh ra mã một tập tin

ProductHome.java như sau:

package ricebox.ejb; ˆ

import java.rmi.RemoteExcept

Cimport java.util, Collection

import Javax: che i 4

i public interface ProductHome ext

: “throws RemoteException; Find

public Collection findALLy

throws RemoteException,

r exception sản

pa sue rees clon:

Với cách làm như vậy, lần lượt các bảng đữ liệu trong tài liệu ejb-jar-ex.xml sé duge chuyên thành các tập tin java

Trang 23

IL4 Mô hình chỉ tiết ứng dụng RiceBox khi tạo ra DHTML

Hình minh họa 2.4 là phần chỉ tiết cụ thể của ứng dụng RiceBox trong việc tạo ra các tập

Cũng tương tự như mô hình 2.3 khi sinh ra CMP EntityBean, mo hình sinh mã

lệnh DHTML này chỉ khác nhau vài điểm như: Bộ máy tạo XML, Máy tạo mã nguồn sẽ

chi dành riêng cho việc tạo ra các mã nguồn DHTML và các tệp tin mở rộng XML và

XSL được thay thế cụ thé bang html-ex.xml, EntityBinder.xsl, HEntity.xsl Và các

Trang 24

tệp tin mã lệnh sẽ có phần mở rộng là *.html và *.js Điều khác biệt nữa là khi sinh mã

lệnh DHTML thì không có giao điện chỉnh sửa nội dung

Tài liệu XML ở trong hình 2.2 sẽ là html-ex.xml, đây là nơi chứa toàn bộ các

thông tin vé database nhu tén table, tén field, kiểu dữ liệu và các thông tin kết nỗi sau khi

đã đi qua máy tao XML

Bước cuối cùng là Máy sinh mã tự động sẽ trộn nội dung các tệp tin XML và XSL

để sinh ra các tập tin mã nguồn cần thiết triển khai một ứng dụng DHTML Công việc cụ

thể như việc kết hop XML va XSL bởi ứng dụng Java bạn có thể tham khảo thêm các chương về Ly Thuyết XML và XSL

Vi du minh hoa cu thé cho mô hình trên được hiện thực trong ứng dụng:

Đữ liệu vào là thông tin về đatabase, sau khi thao tác với Bộ máy sinh XML ta có

được tập tin tài liệu XML có tên html-ex.xml Trong phần này em xin đề cập đến bảng dữ liệu Product(sản phẩm) có nội dung như sau:

Trang 25

entity Pro wet = = document “forms [0 Product ID valu

;enEiE.Name := - đocumenrt #ormal0] Name value?

-entity:Price = document: forms [0] Price.value; : entity-CategoryiD = document forms [0] tát cạp tư

Trang 26

CHƯƠNG HI: CÔNG NGHỆ VÀ ỨNG DỤNG

IH.1 JDBC (Java Đatabase Connectivity)

ULI Khai niém

Mỗi hệ quản trị đatabase có cách lưu trữ dữ liệu khác nhau cùng với cơ chế bảo đảm tính toàn vẹn dữ liệu Vì thế một ứng dụng muốn tương tác với dữ liệu trong database cần phải

biết định dạng của database này Đây là một diéu kho khan vi méi DBMS (DataBase Management System) cé định dạng khác nhau Java cũng như các ngôn ngữ khác đều cung cap cac DataBase Connectivity API (Application Programming Interface — cong cụ

lập trình ứng dụng cho việc kết nối với database) được gọi là JDBC nhằm chuẩn hóa qúa

trình tương tác với database của các ứng đụng Mô hình chung như sau:

Hình 3.1: Ủng dung database 2 I6p (two-tier Application)

1II 1.2 Cae dc diém cia JDBC API

- Puogc JavaSoft Inc phat triển

- Chứa một tập các class va interface duoc dung cho viéc ket nôi với mọi

DBMS/RDBMS

- Cho phép dua ra cac truy van SQL, trich di liệu từ database, xử lý tập kết quá từ truy vấn SQL

- _ Cho phép chỉ định các SQL ngay trong chương trình Java

- _ Cho phép sử dụng cấu trúc ứng dụng database 2-lớp (two-tier) và 3 lớp (three-tier)

HIL.1.2.1.Các sản phẩm của IDBC

Gồm 3 thành phần:

- _ Gói Java.sql

Trang 27

Hai vẫn đề được đặt ra:

-_ Các DBMS đều phải tuân thủ SQL và chỉ hiểu các phát biểu SQL, không hiểu các

phát biểu lava (hay các ngôn ngữ lập trình khác) Do vậy cần 1 cơ chế địch các

phát biéu Java sang phát biéu SQL > JDBC cé chire nang Java-to-SQL translator

Mỗi nhà cung cấp lại hỗ trợ các interface va cu phap truy xuất đữ liệu riêng nên có thể có các driver riêng

- Cé qua nhiều DBMS/RDBMS khác nhau trên thị trường như MS Access, SQL

Server, Oracle, Sybase Làm sao ứng dụng Java có thể tương tác với mọi hệ? Một

ứng dụng được viết chỉ cho tương tác với 1 DBMS (MS Access chăng hạn) thì ứng

dụng này làm sao có thể tương tác được với DBMS khác (SQL Server database

chăng hạn) mà không cần phải hiệu chỉnh gì cả? > IDBC cần có đặc điểm độc lập

DBMS.

Trang 28

IL1.2.3 Cơ chế độc lập DBMS của JDBC

Ị '

1

Hình 3.2: Cấu trúc của JDBC

HL1.2.4 Trình quản lý JDOBC

Là xương sống của cầu trúc JDBC, làm nhiệm vụ đuy trì 1 danh sách các driver được tạo

ra cho các database khác nhau và kết nối 1 ứng dụng lava với driver phù hợp đã đặc tả trong ứng dụng java

(i) JDBC-ODBC bridge driver: Microsoft ding céng nghé ODBC (Open DataBase

Connectivity) nhing vao cc RDBMS cia minh (Access, SQL Server, viét bang C ,

dùng pointer và các cấu trúc khác với Java, JDBC API không thể tương tác với

ODBC) Do vậy JDBC-ODBC bridge driver làm nhiệm vụ cầu nối chuyển đôi IDBC

API sang ODBC API ODBC là 1 thư viện chuẩn chứa 1 tập các chương trình con

giúp truy xuất các database khác nhau Khi DBMS được nâng cấp, chỉ ODBC cần

nâng câp còn ứng dụng không can

JDBC-ODBC Bridge driver 14 mét phan cia JDBC, Sun Microsystem cung cap driver nảy giúp truy xuất các nguồn đữ liệu ODBC từ JDBC JDBC-ODBC Bridge driver được

THE VIEN

: * l

\

'số —_ A032, —j ea

Trang 29

hiện thực bằng JdbcOdbc.class và một thư viện phụ thudc hé théng (native library) dé

truy xuất ODBC driver Trong hệ thống chạy Windows OS, thư viện này là

JDBCODBC.đdll

Application SQL-Server [| - MS SQL

Database

Hình 3.3: Cấu trúc 1 ứng dụng JDBC sử dụng JDBC-ODBC Bridge Driver (2) Native API partly Java driver: Mot số DBMS/RDBMS như DB2, Informix có một

JDBC đriver được hỗ trợ bởi nhà cung cấp (có khi cài đặt) dành cho ngôn ngữ Java

Nhờ vậy, JDBC API có thể gọi trực tiếp Các driver này là thư viện chứa các hàm truy xuất database và được gọi là CLI (Call Level Interface, thường được viết bằng ngôn ngữ C) Các bước của qúa trình truy cập database

Bước 1- Client Java App dua ra 1 yéu cầu truy cập database

Bước 2- JDBC dịch yêu cầu thành lời gọi hàm đến CLI

Bước 3- Native CLI thực thi yêu cầu lây kết quả đưa cho JDBC

Bước 4- Client Java App nhận kết qua tir JDBC

Cient Java JDBC CLI „| Network [LL Database App "| Interface

Hình 3.4: Cấu trúc I ứng dụng JDBC sit dung Native API partly Java Driver (3) JDBC-Net-All Java Driver: Chia làm 2 phần: Phần Java được download về Client,

phan CLI dé 6 Server

Trang 30

Hinh 3.5: Cau tric 1 ứng dụng JDBC sử dụng JDBC-Net-All Java Driver (4) Native protocol pure Java driver: Là một driver thuần túy của Java (không dùng CLJ giúp kết nối 1 ứng dụng client hay 1 applet với database qua kết nỗi TCP/IP (Tranfer Control Protocol/ Internet Protocol),

HL1.3 Se dung JDBC

HI.1.3.1, Bảy bước truy xuất database từ một ứng dụng java

Các bước như sau:

Bước 1- import java.sql.*;

Bước 2- Nap Driver

Bước 3- Thiết lập 1 kết nối đến đatabase server thông qua đối tuong Connection Bước 4- Tạo 1 đối tượng Statement giúp thực thi phat biéu SQL

Bước 5- Thực thi phát biểu SQL để lấy dữ liệu vào đối trong ResultSet

Bước 6- Xử lý dữ liệu trích xuất được (Xuất record lên các phần tử trên GUI )

Buéc 7: Dong Statement, dong Connection

Trang 31

M6 hinh 1 img dung co két néi database va thé hién record lén GUI

Class : forname “Em sun jdbc -odbe:; JdbcOdbcDriver” 1

Để nap driver, cần thực thi hành vi forname của lớp Class Thí dụ trên minh họa việc nạp

JDBC-ODBC Bridge driver

Bước 2: Thiết lập một kết nối đến với database

Trong gói sql có lớp Connecflon giúp kết nối ứng dụng với đatabasc Thông qua 1 đỗi tượng thuộc lớp này, việc kết nối được thực hiện để cho phép truyền các truy van tir img dung sang database ciing nhu lay về tập kết quả truy vẫn Nếu ứng dụng cần tương tác với nhiéu database thì cần nhiều đối tượng Connection Phương thức getConnecfionQ của lớp DriverManager (trong gói Java.sql) giúp khởi động việc kết nối với đatabase thông qua mét ten JOBC URL ( JDBC Uniform Resource Locator- tên xác định tài nguyên thông

nhất) Một JDBC URL là 1 chuỗi ký tự gồm 3 phần:

Trang 32

<protocol>:<subprotocol>:<subname>

Trong đó:

- protocol: tén dinh vi tai nguyén cia JDBC ( JDBC URL) va luôn luôn là “ydbce”

-_ sưbprotocol: tên của cơ chế kết nỗi Nếu là cơ chế JDBC-ODBC Bridge thì chuỗi

này phải là “odbc”

- subname: Được dùng để nhận dạng database subname cũng được dùng để nhận dạng DSN (data source name chứa thông tin nhận dạng database trong hệ thông server bao gồm: tên đafabase, username, password và tên log file lưu trữ các thông tin về qúa trình truy vấn (lịch sử các câu sql))

Thi du:

‘String url = “jdbc: odbe: :MyDataSource”; Connection con = DriverManager -getConnection(url, ten đăng nha

IlI.1.3.2 Tao va thie thi cac phat biéu SQL

Dùng một đối tượng thuộc lớp Statement để gửi 1 truy vẫn đơn giản sang RDBMS Các

hành vi cúa đối tượng Statement dùng để truy vấn:

- boolean execute(String Sq!) dé yéu cầu thực thi 1 truy vân bất kỳ, thường dùng cho

việc tạo bảng

- ResultSet executeQuery(String SelectSql) để yêu cầu thực thi 1 ty van SELECT

và trả về 1 đối tuong ResultSet Tur đối tượng ResultSet, ứng dụng Java sẽ thể hiện,

xử ly đữ liệu

- int executeUpdate(String Sql) để thực thi các truy van SQL: INSERT, UPDATE,

DELETE va tra vé I gia tri int mé ta sé dòng bị ảnh hưởng ( kết quả là trị 0 nếu truy vẫn không trả trị)

Thí dụ vé tao bảng:

Trang 33

Sgl1= 5gl1 + ®tuọ '.inE; maPhong int Luong double) ”

Statement stmt = Con ckeateStatement ();_ hye

String sql = “Select * From Nnanvien

Sql = Sql-+-" Order by maNV” / `

Statement stmt = Con: chedtestatement (1) aft

String: Sql = “select * From’ NhanVien Where Ten like &

Statement stmt = Con createStatement (); j ụ

Trang 34

_ String sql = “Update Nhanvie

Statement! stmt = Con GreateStatement (); cee

ảnt AffectedRow:= ustmt executeUpdate (Sql)3

Sal S Sal ` + —¬- Nhacc Macc = Phieuthan maCC”;

"Statement stmt = Con createStatement ( de fi Conde

HI.1.3.3 Thao tác trên ResultSet

Đối tượng ResultSet chứa tập kết quả truy vẫn được từ database ( kết quá của SELECT là

1 tập các record- có cấu trúc dòng-cột) ResultSet lưu trữ vị trí của record hiện hành (gọi

là cursor, pointer) trong tập record Ban đầu, cursor đặt ở vị trí ngay trước record đầu tiên

Cấu trúc nội của ResultSet ngoài tập record thực sự còn có thêm 1 record trồng ở đầu

(BOF-Begin Of File) va 1 record trống ở cuối (EOF- End Of File) giip quan ly cursor không vượt ra khỏi vùng nhớ dữ liệu này

a) Di chuyén cursor trong ResultSet

- Cac phuong thirc boolean first(), previous(), next(), last() sẽ di chuyén cursor sang record vé record dau/vé record trước/về record sau/vé record cudi trong ResultSet

có kiểm tra BOF va EOF

Trang 35

- Cac phuong thirc boolean isAfterLast(), isBeforeFirst(), isFirsrt(), sé kiém tra vi

tri cursor hién hanh

- int getRow() lay chỉ số cursor

b) Thao tac doc đữ liệu của record hién hanh: Cac phuong thie getXXX (int ChiS6C6t), petXXX(String TênCột) giúp đọc dữ liệu của 1 cột của record hiện hành Các phương thức sau đây là các phương thức thông dụng:

String getString: Lấy chuỗi, tương thích với kiéu char(n), varchar(n) cha SQL int petInt: Lấy trị kiểu int, tương thích với kiểu tinyint, smallint, int cha SQL float getFloat : Lay tri float, trong thích với kiéu float va money cia SQKL double getDouble: Lay tri double

Date getDate: Lay dir liéu thành đối tượng java.sql.Date, tương thích với kiểu DateTime SQK

time getTime: Lay dir liéu thanh đối tượng java.sqÏ.Time

array getArray: Lây dữ liệu của cả I cột thành 1 mảng

c) Thao tác cập nhật / xóa dữ liệu trong ResultSet

- Các phương thức updateXXX cho phép cập nhật dữ liệu của 1 cột thuộc dòng hiện hành hoặc cả 1 cột bằng 1 array

- Phuong thire deleteRow() sé x6a dòng hiện hành và dữ liệu tương ứng trong

Trang 36

Cac thao tác thông dụng

(1) Lấy đối tượng ResultSetMetaDatfa của 1 ResultSet

md = ResultSetObj.getMetaData(); a

ResultSetMetaData ˆ

Từ đối tượng ResultSetMetaData Rsmd, chúng ta có thể:

(2) Lấy số recors hiện hành của ResultSet:

“int Recordcount= rsmd.getColumnCount () 7

(3) Lấy tên cột thứ int ¡ :

-String ColumaName = xzsmd getColumnName (1)7

(4) Lấy kiểu đữ liệu của cột thứ int ¡ của resuliset trong câu SQL (tên cột trong SQL có thé la alias)

String DataType i

(5) Lay kiéu đữ liệu của cột thứ int ¡ trong thiết kế database :

String Datatype i = remd,getCoiunn7ybeName (1];-

IH.1.3.5 Thao tác với thú tục lưu trữ của database

a) Thủ tục lưu trữ - Stored Procedure?

- _ Là một nhóm phát biểu SQL được xem như 1 đơn vị tắc vụ (tương tự 1 hàm)

- _ Là công cụ bao gói 1 tập các truy vần trên database => Tang kha nang bao mat trén database thong qua việc cấp quyên thực thi trên các user khác nhau

- Có thể có tham số nhập/xuất hoặc cả nhập lẫn xuất

- _ Có thể cho ra nhiều kết quả (nhiều result set)

- - Mỗi DBMS có cú pháp khác nhau về việc tạo thủ tục lưu trữ.

Trang 37

- Có 2 loại thủ tục lưu trữ: Thủ tục lưu trữ mức hệ thống ( thủ tục làm sẵn của

DBM®) và thủ tục lưu trữ do user định nghĩa

b) Cú pháp tạo thủ tục lưu trữ (user đefined) trong SQL Server

‘Name, Address From | Supplier ộ

c) Tạo thú tục lưu trữ cho database bằng JDBC

Thủ tục lưu trữ được định nghĩa bởi I chuỗi Như vậy, với JDBC, có thể tạo 1 thủ tục lưu trữ như sau:

String ProcStr.= “Create Procedure getNameaddofSuppliers As” Me

- procStr 45 “Select” Name, “Address From eee Order by Name”

Statement Štmt =: Con: createStatement () 7 vực wong Ce

StmE: executeUpadate (ProcStr); ;

Gọi thủ tục lưu trữ từ JDBC

Để có thể gọi I thủ tục lưu trữ trong database, Java xây dựng lớp CallableStatement Lớp này có hành vi executeQuery sẽ gọi 1 thủ tục lưu trữ trong database Để có đối tượng CallableStatement, sử dụng hành vi prepareCall với

tham số là tên thủ tục lưu trữ đã biết của đối tượng Connection

Thí dụ: Với Con là đối tượng Connection đã có

Trang 38

Đối tượng DatabaseMetadata chứa các thông tin mở rộng(metadata) vé database Cac thông tin mở rộng của 1 database bao gồm: thông tin về các bảng đữ liệu, các cầu trúc của

nó, các lưu trữ thủ tục v.v

Ví dụ:

DatabaseMetaData dbmt = conn.getMetaData()// conn: Kết nối dén database

Khi đã có sẵn đối tượng DatabaseMetaData, chúng †a có thể có được thông tin mở rộng của database Đối tượng được trả về là một ResultSetMetaData chứa một tập hợp các kết

quả chỉ tiết được trả về như: có bao nhiêu table trong 1 đatabase? Hoặc có bao nhiêu stored procedure trong 1 database?

Một số phương thức thao tác với DatabaseMetaData:

STT | Tên hàm Giá trị trả về

Trả về ResultSet chứa toàn bộ các thông tin

vé cac database trong 1 DBMS

Trả về ResultSet chứa toàn bộ các thông tin

về các bản dữ liệu trong 1 database

Trả vé ResultSet chứa toàn bộ các thông tin

về các khóa ngoại trong bảng dữ liệu z

Trả về ResuliSet chứa toàn bộ các thông tin

về các khóa chính trong bảng đữ liệu z

Ví dụ lây các tên các khóa chính trong 1 bảng đữ liệu:

ArrayList pkevs:= new ArravList(}; - 5ô 5 SỐ,

“RegultSet rset = DBUtilS-open().,getMetaData().getPrimaryxXeys (null,

table)? PEt a SEs hi ae ae ee số : lộ

while (rset next ()){

: pkeys-add(rset.getString ("COLUMN }

Trang 39

111.2 XML (EXtensible Markup Language)

HHI2.L Khái nệm XML

XML (EXtensible Markup Language) là một ngôn ngữ đánh đấu tựa như HTML, hầu hết

các file XML đều đùng để mô tả dữ liệu Các thẻ XML không được định nghĩa trước,

XML str dung DTD (Document Type Definition) hay XML Schema để mô tả dữ liệu

Một điều rất quan trọng là XML dùng lưu trữ, thay đổi dữ liệu chứ hoàn toàn không hiển thị đữ liệu XML được phát triển bởi W3C và được cấp phép miễn phí

HH2.2 Sử dụng XML

HI.2.2.1 XML dùng để tách dữ liệu từ HTML

Trong khi HTML được sử dụng để hiển thị dữ liệu, và những dữ liệu đó được chứa

bên trong HTML Với XML, dữ liệu có thể được tách rời để lưu trữ thành những tập tin riêng biệt Điền này giúp bạn tập trung hơn khi sử dụng XML với các mục đích sắp xếp

và hiển thị đữ liệu và chắc chắn rằng khi có một sự thay đôi đữ liệu thi sẽ không làm ánh hưởng đến HTML

Ngoài ra, XML cũng có thể nằm bên trong HTML như là một “Data Islands”, khi đó

bạn vẫn có thể làm việc bình thường với HTML dùng để hiển thị dữ liệu

HL2.2.2 XML dùng đề thay đổi dữ liêu

Trong thế giới thật của chúng ta, các hệ thống máy tính và các trình quản lý dữ liệu

luôn lưu trữ các loại dữ liệu có định dạng khác nhau Một trong những vấn để khó khăn là

làm thế nào để thay đôi đữ liệu từ định dạng này sang định dạng khác giữa các hệ thống thông qua internet

Bang cach chuyén dé liéu sang XML có thể làm giảm đi sự phức tạp của đữ liệu Sau

đó ta có thể đọc lại từ XML mà khôi phục lại thành nhiều định dạng đữ liệu có định dạng

khác nhau

Trang 40

II2.2.3 XLM có thể tạo ra ngôn ngữ mới

XML có thể được xem là cha đẻ của WML (The Wireless Markup Language), một ngôn ngữ internet của các thiết bị đi động như PPC, handheld, Smartphone

THỊ 2.3 Cú pháp của XML

Cú pháp của XML khá đơn giản và dễ sử dụng nhưng lại khá chặc chẽ Chính vì lẽ đó,

việc tạo ra một ứng dụng dé tương tác với XML là một công việc khá dễ dàng

Dòng đầu tiên mô tả phiên bản của XML và việc sử dụng Encoding nao Kế đến thẻ

<note> được xem như là thẻ gốc (root) Bốn hàng kế đến là các phần tử của thẻ gốc này Cuối cùng </note> được xem như là thẻ kết thúc

Các điểm cân lưu ý:

- _ Tất cả các thê trong XML đều có thẻ đóng Sẽ là không hợp lệ nếu một thẻ thiếu đi

thé dong (closing tag)

- Không giống như HTML, XML phân biệt chữ hoa và chữ thường khi sử dụng thẻ

<Message>This is incorrect</message> sẽ không hợp lệ

- Tất cả các tài liệu XML đều phải có thẻ gốc (root element) va tất cả các thẻ con phải lồng trong thẻ này

- _ Trong XML khoảng trắng sẽ được giữ lại

Ngày đăng: 04/05/2014, 10:33

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w