HTML là phương tiện để mô tả cấu trúc của thông tin văn bản trong một tài liệu bằng cách hiển thị văn bản dưới dạng đường link, đầu mục, đoạn văn, danh sách,… HTML được viết dưới dạng c
Trang 1MỞ ĐẦU
1 Tính cấp thiết của đề tài
Trong xã hội thông tin ngày nay, thông tin là yếu tố quan trọng bậc nhất trong mọi hoạt động của đời sống, mọi ngành nghề trong xã hội Sự bùng
nổ thông tin khiến cho thông tin trở thành nguồn tài nguyên khổng lồ mà con người cần nỗ lực để có thể làm chủ Một trong những yếu tố thúc đẩy việc sản sinh thông tin với khối lượng ngày càng lớn như vậy chính là mạng Internet, đồng thời mạng Internet cũng là công cụ hữu hiệu để lưu trữ và truyền tải thông tin Với hệ thống World Wide Web khổng lồ, con người có thể dễ dàng tìm kiếm, nắm bắt, trao đổi thông tin từ khắp nơi trên thế giới
World Wide Web (hiểu ngắn gọn là “Web”) là tập hợp các tài liệu siêu văn bản được liên kết với nhau và truy cập thông qua mạng Internet Với một trình duyệt Web, ta có thể xem được các trang Web chứa đầy đủ văn bản, hình ảnh, âm thanh,… và có thể di chuyển qua lại sử dụng các siêu liên kết
(hyperlinks) Các trang Web như vậy được tạo lập nên nhờ các ngôn ngữ đánh
dấu, mà được biết đến nhiều nhất là ngôn ngữ đánh dấu siêu văn bản - HTML
(HyperText Markup Language) HTML là phương tiện để mô tả cấu trúc của
thông tin văn bản trong một tài liệu bằng cách hiển thị văn bản dưới dạng đường link, đầu mục, đoạn văn, danh sách,… HTML được viết dưới dạng các
thẻ (tags) đặt trong cặp dấu ngoặc nhọn < >
Tuy nhiên, HTML có những hạn chế nhất định Với HTML, người sử dụng chỉ dừng lại ở việc xem tài liệu chứ họ không thể thao tác với chúng, tạo lập chúng theo định dạng mong muốn Với thực tế là HTML thì có nhiều hạn chế, trong khi SGML lại quá phức tạp không thể ứng dụng, vào cuối những năm 90, các nhà nghiên cứu đã sáng tạo ra ngôn ngữ đánh dấu mở rộng -
XML (eXtensible Markup Language) Tính linh hoạt và khả năng ứng dụng
cao giúp cho XML nhanh chóng được chấp nhận bởi các nhà chuyên môn
Trang 2(W3C - World Wide Web Consortium đã ngay lập tức định hình HTML thành một ứng dụng XML với kết quả là XHTML)
Hiện nay, XML được ứng dụng rộng rãi trong rất nhiều lĩnh vực, và lĩnh vực Thông tin - Thư viện cũng đã áp dụng XML để hoàn thiện công tác của mình Từ thực tế này, là sinh viên của ngành Thông tin - Thư viện, tôi nghĩ rằng việc nghiên cứu về XML và ứng dụng của nó là hoàn toàn cần thiết
Chính vì vậy, tôi đã lựa chọn thực hiện đề tài “Tìm hiểu ngôn ngữ XML - Một số ứng dụng trong lĩnh vực Thông tin - Thư viện”
2 Mục đích nghiên cứu
Việc nghiên cứu đề tài này trước hết giúp tôi tìm hiểu một cách khái quát về XML, ứng dụng của nó nói chung và đặc biệt trong lĩnh vực Thông tin - Thư viện Từ việc hiểu về cách thức tạo lập cũng như tiện ích ứng dụng của ngôn ngữ đánh dấu, tôi có thể đưa ra một số giải pháp, kiến nghị giúp nâng cao hiệu quả sử dụng nó trong lĩnh vực Thông tin - Thư viện của mình
3 Phạm vi nghiên cứu
Vấn đề XML là vấn đề rất rộng lớn, với XML, rất nhiều ứng dụng cũng như tiện ích có thể được tạo ra, tùy biến theo mong muốn của từng cá nhân, từng lĩnh vực ngành nghề cụ thể Chính vì vậy, với thời gian tìm hiểu có hạn,
và trong phạm vi trình bày của một Khóa luận, tôi chỉ có thể nêu ra những khái niệm cơ bản, cấu trúc, cách hiển thị tài liệu XML trong trình duyệt và một số ứng dụng của XML trong lĩnh vực Thông tin - Thư viện
4 Phương pháp nghiên cứu
Để thực hiện Khóa luận này, về mặt phương pháp luận tôi sử dụng phương pháp nghiên cứu tài liệu và phương pháp hỏi ý kiến chuyên gia Tài liệu được tìm kiếm chủ yếu trên các trang web, đặc biệt là trang web của Thư viện Quốc hội Mỹ Sau khi thu thập, tham khảo tài liệu về ngôn ngữ XML, tôi thực hiện phương pháp khảo sát, đánh giá, so sánh với tình hình sử dụng thực
tế của nó trong một số lĩnh vực và đặc biệt là lĩnh vực Thông tin - Thư viện
Trang 35 Đóng góp về lý luận và thực tiễn của Khóa luận
Thực hiện đề tài Khóa luận này, tôi hy vọng có thể có những đóng góp như sau:
- Khái quát và cung cấp được cho người đọc những thông tin cơ bản về các loại ngôn ngữ đánh dấu nói chung và ngôn ngữ đánh dấu mở rộng XML nói riêng, cùng với tình hình phát triển và ứng dụng của chúng
- Giới thiệu một vài ứng dụng quan trọng của XML trong lĩnh vực Thông tin - Thư viện và đưa ra các kiến nghị nhằm đẩy mạnh việc ứng dụng, nâng cao hiệu quả của loại ngôn ngữ này tại Việt Nam
6 Bố cục của Khóa luận
Phần nội dung của Khóa luận gồm 4 chương như sau:
Chương 1 Tổng quan về ngôn ngữ đánh dấu - Markup Language
Chương này nêu tổng quan về khái niệm và việc sử dụng một số loại ngôn ngữ đánh dấu cơ bản, đi sâu hơn vào ngôn ngữ đánh dấu siêu văn bản HTML
Chương 2 Ngôn ngữ đánh dấu mở rộng - XML
Chương này đi sâu tìm hiểu về ngôn ngữ XML, cấu trúc, các thành phần cơ bản của ngôn ngữ này
Chương 3 Một số ứng dụng XML trong lĩnh vực Thông tin - Thư
Trang 4CHƯƠNG 1 TỔNG QUAN VỀ NGÔN NGỮ ĐÁNH DẤU -
MARKUP LANGUAGE
Ngôn ngữ đánh dấu là một tập hợp các ghi chú cho văn bản mô tả cách chúng được cấu trúc, trình bày, hoặc định dạng Ngôn ngữ đánh dấu có thể là dạng viết tay hoặc dạng mã đánh dấu sử dụng trong hệ thống xử lý văn bản của máy tính Ví dụ điển hình nhất về ngôn ngữ đánh dấu chính là Ngôn ngữ đánh dấu siêu văn bản - HTML, một trong số các giao thức của World Wide Web
Dưới đây là khái niệm về một số loại ngôn ngữ đánh dấu
1.1 Ngôn ngữ đánh dấu tổng quát - GML
GML (Generalized Markup Language) là ngôn ngữ định dạng tài liệu
của IBM, nó mô tả một tài liệu về mặt cấu trúc tổ chức, các phần nội dung và mối quan hệ giữa chúng GML cho phép mô tả các phần của một tài liệu theo thứ bậc đề mục: Tên phần/chương, các đoạn văn bản trong đó, danh mục, bảng biểu,…
GML là nền tảng để phát triển các loại ngôn ngữ đánh dấu sau này
1.2 Ngôn ngữ đánh dấu tổng quát chuẩn - SGML
SGML (Standard Generalized Markup Language) được phát triển lên
từ GML Năm 1986, SGML được tổ chức ISO công nhận là chuẩn lưu trữ và chuyển đổi dữ liệu (ISO 8879:1986)
SGML bản thân nó không phải là một ngôn ngữ tư liệu, nó là ngôn ngữ dùng để đặc tả các ngôn ngữ khác, nói cách khác, SGML là một loại siêu
ngôn ngữ hay siêu dữ liệu (metadata)
SGML được thiết kế với mục đích để chia sẻ các dữ liệu đọc máy từ hệ thống này sang hệ thống khác mà không bị mất dữ liệu Nó cũng được sử
Trang 5dụng trong việc in ấn và xuất bản Tuy nhiên, do việc sử dụng SGML quá phức tạp và phải tốn nhiều công sức để thực hiện nên SGML không được mở rộng áp dụng đối với mục đích sử dụng thông thường
1.3 Ngôn ngữ đánh dấu siêu văn bản - HTML
1.3.1 Khái quát chung
HTML (HyperText Markup Language) là loại ngôn ngữ đánh dấu nổi
trội cho các trang Web Như đã định nghĩa ở trên, HTML cung cấp phương tiện để mô tả cấu trúc của thông tin văn bản trong một tài liệu bằng cách hiển thị văn bản dưới dạng đường link, đầu mục, đoạn văn, danh sách,… Giống
với SGML, HTML sử dụng các thẻ (tags) đặt trong cặp dấu ngoặc nhọn < >
<BODY Các tham số nếu có>
Phần thân trang web
</BODY>
</HTML>
Thẻ đầu tiên trong tài liệu HTML là <html> Thẻ này báo cho trình duyệt biết đây là điểm khởi đầu của một tài liệu HTML Thẻ cuối cùng của tài liệu là </html>, thẻ này báo cho trình duyệt biết đây là điểm kết thúc của văn bản
Trang 6Đoạn chữ nằm giữa hai thẻ <head> và </head> là thông tin header, nó xác định phần mở đầu của tài liệu
Đoạn chữ nằm giữa cặp thẻ <title> </title> là tiêu đề của văn bản Dòng tiêu đề này sẽ xuất hiện ở thanh trạng thái của trình duyệt web
Đoạn chữ nằm giữa cặp thẻ <body> </body> là nội dung văn bản, chính là những gì sẽ thể hiện trên trình duyệt
Các thẻ của HTML không phân biệt chữ viết hoa và chữ viết thường
Có thể thêm vào các thuộc tính cho các thẻ của HTML Những thuộc tính này cung cấp thông tin về thành phần HTML của trang Web Ví dụ:
<body bgcolor=“red”> báo cho trình duyệt biết rằng màu nền của trang là màu đỏ Thuộc tính luôn luôn đi kèm một cặp name-value với cú pháp: name=“value”
Trang 7 TITLE
Cặp thẻ này xác định tiêu đề của tài liệu, chỉ có thể sử dụng trong phần
mở đầu của tài liệu, tức là nó phải nằm trong phạm vi giới hạn bởi cặp thẻ HEAD Cú pháp:
- TEXT: Xác định màu chữ cho văn bản, kể cả các đề mục
- ALINK, VLINK, LINK: Xác định màu sắc cho các siêu liên kết trong văn bản
Thẻ định dạng khối:
Trang 8 Thẻ P
Thẻ <P> được sử dụng để định dạng một đoạn văn bản Cú pháp:
<P>Nội dung đoạn văn bản</P>
Các định dạng đề mục
HTML hỗ trợ 6 mức đề mục Ở đây, đề mục chỉ là các chỉ dẫn định dạng về mặt Logic, tức là mỗi trình duyệt sẽ thể hiện đề mục dưới một khuôn dạng thích hợp Có thể ở trình duyệt này là font chữ 14 nhưng sang trình duyệt khác là font chữ 20 Đề mục cấp 1 là cao nhất và giảm dần đến cấp 6 Văn bản ở đề mục cấp 5 hay cấp 6 thường có kích thước nhỏ hơn văn bản thông thường
Dưới đây là các thẻ dùng để dịnh dạng văn bản ở dạng đề mục:
Để xuống dòng trong tài liệu, ta phải sử dụng thẻ <BR>
Thẻ PRE
Trang 9Thẻ này dùng để giới hạn đoạn văn bản đã được định dạng sẵn Văn bản ở giữa hai thẻ này sẽ được thể hiện giống hệt như khi chúng được đánh vào, ví dụ dấu xuống dòng trong đoạn văn bản giới hạn bởi thẻ <PRE> sẽ giữ nguyên ý nghĩa chuyển sang dòng mới (trình duyệt sẽ không coi chúng như dấu cách)
- Danh sách không sắp xếp (hay không đánh số): <UL>
- Danh sách có sắp xếp (hay có đánh số): <OL>, mỗi mục trong danh sách được sắp xếp thứ tự
- Danh sách thực đơn: <MENU>
- Danh sách phân cấp: <DIR>
Với nhiều trình duyệt, danh sách phân cấp và danh sách thực đơn giống danh sách không đánh số, có thể dùng lẫn với nhau
Với thẻ OL, cú pháp như sau:
<OL TYPE=1/a/A/i/I>
<LI>Mục thứ nhất
<LI>Mục thứ hai
Trang 10=a: Các mục được sắp xếp theo thứ tự a, b, c…
=A: Các mục được sắp xếp theo thứ tự A, B, C…
=i: Các mục được sắp xếp theo thứ tự i, ii, iii…
=I: Các mục được sắp xếp theo thứ tự I, II, III…
Ngoài ra còn thuộc tính START= xác định giá trị khởi đầu cho danh sách
Thẻ <LI> có thuộc tính TYPE= xác định ký hiệu đầu dòng đứng trước mỗi mục trong danh sách Thuộc tính này có thể nhận giá trị: disc (chấm tròn đậm); circle (vòng tròn); square (hình vuông)
Các thẻ định dạng ký tự:
Các thẻ định dạng in ký tự
- <B> … </B>, <STRONG> … </STRONG>: Chữ in đậm
- <I> … </I>: Chữ in nghiêng
- <U> … </U>: Chữ gạch chân
- <DFN> … </DFN>: Đánh dấu đoạn văn bản giữa cặp thẻ này là định nghĩa của một từ Chúng thường được in nghiêng hoặc thể hiện bằng một kiểu đặc biệt nào đó
- <S> … </S>, <STRIKE> … </STRIKE>: Chữ gạch ngang thân
- <BIG> … </BIG>: In chữ lớn hơn bình thường bằng cách tăng kích thước Font hiện thời lên một Việc dùng các thẻ <BIG> lồng nhau sẽ tạo nên
Trang 11hiệu ứng chữ tăng dần Đối với trình duyệt có giới hạn kích thước font chữ, vượt qua giới hạn này, các thẻ <BIG> sẽ không có ý nghĩa
- <SMALL> … </SMALL>: Ngược lại với thẻ <BIG>, in chữ nhỏ hơn bình thường bằng cách giảm kích thước Font hiện thời đi một Việc dùng các thẻ <SMALL> lồng nhau sẽ tạo hiệu ứng chữ giảm dần Đối với trình duyệt
có giới hạn kích thước font chữ, vượt qua giới hạn này, các thẻ <SMALL> sẽ không có ý nghĩa
- <FONT> … </FONT>: Chọn kiểu chữ hiển thị Trong thẻ này có thể đặt hai tham số Size= ; Color= xác định cỡ chữ và màu sắc đoạn văn bản nằm giữa hai thẻ
Căn lề văn bản
Việc căn lề văn bản giúp cho trang web có được một bố cục đẹp Một
số các thẻ định dạng như: P, HN, IMG… đều có tham số Align cho phép căn
lề cho các đoạn văn bản nằm trong phạm vi giới hạn của các thẻ đó
Các giá trị cho tham số Align:
- LEFT: Căn lề trái
- CENTER: Căn giữa trang
- RIGHT: Căn lề phải
Ngoài ra, có thể sử dụng thẻ CENTER để căn giữa một khối văn bản,
cú pháp: <CENTER>Đoạn văn bản cần căn chỉnh</CENTER>
Trên đây là cú pháp và cách sử dụng một số thẻ cơ bản trong tài liệu HTML Ngoài những thẻ kể trên, HTML còn sử dụng rất nhiều thẻ khác như: thẻ chèn âm thanh, hình ảnh; thẻ định dạng bảng biểu…
Với số lượng thẻ phong phú, việc tạo ra tài liệu HTML khá đơn giản, tuy nhiên cần phải sử dụng chúng một cách hợp lý, linh hoạt mới có thể cho một trang HTML đẹp mắt
Trang 12CHƯƠNG 2 NGÔN NGỮ ĐÁNH DẤU MỞ RỘNG - XML
2.1 Quá trình phát triển
Như đã nói ở trên, HTML là một ứng dụng của SGML với ý tưởng ban đầu là tách biệt nội dung tài liệu khỏi cách thức trình bày, nói cách khác, HTML chú trọng đến cách thức trình bày chứ ít chú ý đến cấu trúc ngữ nghĩa của tài liệu HTML bắt đầu khiến mọi thứ trở nên sai lệch Ví dụ, thẻ <em> trong trang Web nghĩa là “emphasize” - nhấn mạnh Người sử dụng sẽ cho hiển thị nội dung được nhấn mạnh này bằng cách in đậm chữ, hoặc in màu khác… Việc này không làm hài lòng những người thiết kế Web, họ muốn giữ
cố định cách hiển thị chính xác của trang Web Một vấn đề khác là cuộc cạnh tranh quyết liệt giữa Netscape và Microsoft đã dẫn tới việc “rạn nứt” các tiêu chuẩn, gây khó khăn lớn cho các nhà phát triển Web Các trang Web bắt đầu được sử dụng cho những mục đích đi xa khỏi khái niệm ban đầu, gồm có khai thác đa phương tiện, hình ảnh động, các ứng dụng trực tuyến, thương mại điện tử… Trình duyệt Web cũng phải nới lỏng đối với những trang Web viết vội đã làm trái quy tắc như sử dụng thẻ mở mà không có thẻ đóng tương ứng Kết quả, sự thiếu nguyên tắc như vậy đã trở thành rào cản cho việc khai thác nội dung trang Web, hay việc sử dụng HTML cho dữ liệu có cấu trúc
Do HTML quá hạn chế, trong khi SGML lại quá phức tạp để thực hiện, các nhà nghiên cứu đã sáng tạo ra XML - ngôn ngữ đánh dấu mở rộng Với việc sử dụng XML, có thể lưu trữ được hầu như bất kỳ loại dữ liệu nào, ở dạng mà các ứng dụng có thể dễ dàng tiếp nhận và xử lý
XML là ngôn ngữ xây dựng cấu trúc tài liệu văn bản, dựa theo chuẩn SGML XML được W3C (World Wide Web Consortium: tổ chức độc lập định ra tiêu chuẩn cho trình duyệt Web, máy chủ và ngôn ngữ) phát triển, nhưng đặc tả XML lại do Netscape, Microsoft và các thành viên của dự án Text Encoding Initiative (TEI) xây dựng
Trang 13W3C chính thức thông qua chuẩn XML vào tháng 2 năm 1998 Thực chất, XML phát triển không phải với mục đích trang trí trang Web mà là trợ giúp cấu trúc cho tài liệu và dữ liệu để chúng có thể trao đổi giữa các phòng ban, khách hàng và nhà cung cấp Cho dù XML vẫn chưa phổ biến, song đang được nhiều đối tượng quan tâm bởi nó cho phép chia sẻ và sử dụng thông tin phân tán trên các hệ thống khác nhau
2.2 Các phần của tài liệu XML
Khai báo (Declaration):
<?xml version="1.0" encoding="utf-8" standalone=“yes”?>
Dòng khai báo trên cho biết nội dung tiếp theo là tài liệu XML, hiện sử dụng theo phiên bản 1.0 (phiên bản XML duy nhất được định nghĩa hoàn chỉnh hiện nay) và mã hóa ký tự theo UTF-8 (phiên bản thu gọn 8-bit của Unicode)
Khai báo thực thể độc lập (standalone): đặt thuộc tính này là “yes” nếu tài liệu không tham chiếu đến các thực thể khác bên ngoài (external entity), nếu ngược lại, ta đặt giá trị “no”
<?xml-stylesheet href="mystylesheet.css" type="text/css" ?>
Không gian tên (Namespace):
Trang 14Thuộc tính “xmlns” vừa để định rõ không gian tên mặc định cho toàn
bộ nội dung phần tử dữ liệu, vừa là tiền tố để giải quyết vấn đề xung đột về tên Tên đầy đủ của không gian tên phải là duy nhất Ta dùng định danh tài nguyên duy nhất (URI) để đặt cho không gian tên cần truy xuất Hiện nay, do URI chưa phổ biến nên thường dùng URL làm định danh duy nhất, vì vậy nó trông giống như một địa chỉ Web dù trên thực tế nó chỉ là một cái tên
Ví dụ: <timhieuxml>
<xmlns=“http://xml.com/example”>
</timhieuxml>
Các Phần tử (Elements) và Thuộc tính (Attributes):
Đây là thành phần căn bản khi xây dựng tài liệu XML Phần tử mang tính thứ bậc, phải có thẻ mở <element> và thẻ đóng </element>, có thể chứa hoặc không chứa thuộc tính ở thẻ mở Các phần tử rỗng là các phần tử không
có nội dung, và có thể sử dụng kết hợp thẻ mở và đóng, như <hr/>
Ví dụ: <tapchi tieude=“Thế giới vi tính”> … </tapchi>
Dữ liệu nội dung:
Là phần văn bản tạo nên nội dung trong các thẻ phần tử Tương tự trong HTML, các thẻ phần tử có thể bao chứa lẫn nhau
2.3 Tài liệu XML
2.3.1 Tài liệu XML hợp khuôn dạng (Well-formed document)
Khái quát chung:
Một tài liệu chỉ có thể hợp khuôn dạng khi nó tuân theo các quy tắc cú pháp của XML được thiết lập bởi W3C Các quy tắc này được nêu ra trong đặc tả XML 1.0 Có thể nêu ra một số quy tắc như sau:
- Phần khai báo phải đặt ở dòng đầu tiên của trang tài liệu
Trang 15- Các mã đánh dấu có vị trí nhất định của nó và không được thay đổi Tài liệu XML chỉ có một thành phần gốc duy nhất, các thẻ bộ phận không được trùng với thẻ gốc và phải nằm trong thẻ gốc
- Một thuộc tính chỉ có thể xuất hiện một lần trong cùng một thẻ mở
- Phân biệt giữa viết chữ hoa và chữ thường
- Phần tử khác rỗng phải bao gồm đầy đủ thẻ mở và thẻ đóng, phần tử rỗng kết thúc bằng ký tự />
- Các giá trị thuộc tính phải đặt trong dấu nháy kép “ ”
- Một vài ký tự mang ý nghĩa đặc biệt trong XML Ví dụ nếu đặt ký
tự “<” trong một phần tử XML sẽ là lỗi vì ký tự “<” được hiểu là dấu hiệu bắt đầu phần tử mới Trong trường hợp này, ta sẽ dùng ký
tự thay thế là “<” Trong XML, có 5 ký tự thay thế như vậy:
< < less than
> > greater than
& & ampersand
' „ apostrophe
" “ quotation mark
Để hiểu về khuôn dạng hợp lệ, có thể nhìn vào trường hợp tài liệu không hợp khuôn dạng như ở ví dụ dưới đây:
Trang 16</loinoidau>
</tailieu>
Ở đây, tài liệu XML không hợp khuôn dạng vì các thẻ sắp xếp sai vị trí, thẻ
<tieude> và <loinoidau> đan xen vào nhau
Nếu là HTML, trình duyệt vẫn hiểu ra và hiển thị đúng, nhưng với XML, đòi hỏi phải đúng khuôn dạng hoàn toàn
Định dạng và dữ liệu ký tự:
Tài liệu XML được tạo thành từ thành phần định dạng và thành phần
dữ liệu ký tự Định dạng trong tài liệu giúp tạo nên một cấu trúc Định dạng bao gồm:
- Thẻ bắt đầu, thẻ kết thúc
- Các phần tử thẻ rỗng
- Các tham chiếu thực thể, tham chiếu ký tự
- Lời chú thích
- Phân đoạn CDATA
- Khai báo kiểu tài liệu
Trang 17<tailieu> hoặc <loinoidau>… Còn lại, phần văn bản “Ứng dụng XML”,
“Những điều cần biết về XML” là dữ liệu ký tự, chúng không phải là phần
định dạng của tài liệu
Trang 18Như trong ví dụ nêu trên, phần tử gốc chính là cặp thẻ <tailieu>
</tailieu> Có thể đặt tên bất kỳ cho phần tử gốc
Thuộc tính (Attribute):
Thuộc tính của các thẻ trong tài liệu XML tương tự như thuộc tính của các thẻ HTML Thuộc tính được kết hợp theo cặp name=value Thuộc tính cho phép xác định thêm thông tin và ý nghĩa của thẻ Thuộc tính được đặt bên trong thẻ mở và thẻ rỗng
Phân đoạn CDATA:
Như đã đề cập ở trên, các ký tự đặc biệt như “<” hay “&” khi đặt trong phần tử dữ liệu XML cần sử dụng các tham chiếu thay thế để tránh gây ra lỗi Nhưng trong trường hợp muốn lưu toàn bộ dữ liệu từ một tài liệu XML khác vào tài liệu XML của mình sẽ gặp khó khăn vì tài liệu gốc sẽ bị xáo trộn bởi các thẻ nhập vào từ tài liệu bên ngoài
Lúc này, sử dụng phần tử CDATA sẽ báo cho trình phân tích xem toàn
bộ nội dung của tài liệu ngoại như là dữ liệu chứ không phải cấu trúc bao gồm các thẻ Tất cả dữ liệu đặt trong phân đoạn CDATA sẽ không được trình phân tích xem như cấu trúc XML, chúng chỉ là nội dung văn bản bình thường
Trang 19Phân đoạn CDATA cũng là một phần tử nhưng bao gồm chỉ một thẻ Thẻ này bắt đầu bằng “<![CDATA[” và kết thúc bằng “]]>” Giữa dấu hiệu bắt đầu và kết thúc là nội dung văn bản mà trình phân tích sẽ không đụng đến
Trên đây là định nghĩa và cú pháp của các thành phần XML cơ bản Hợp khuôn dạng là yêu cầu tối thiểu mà tài liệu XML cần tuân thủ Tiếp theo, tài liệu XML còn yêu cầu một điều kiện nữa đó là tính hợp lệ khi định nghĩa kiểu tư liệu cho các phần tử trong tài liệu
2.3.2 Tài liệu XML hợp lệ (Valid document)
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
Các định nghĩa DTD nhằm xác định cú pháp đúng đắn cho tài liệu DTD có thể được chứa trong một file tách biệt hoặc chứa ngay trong chính tài liệu, DTD sử dụng phần tử hay thẻ <!DOCTYPE>
Định nghĩa kiểu tư liệu:
Một tài liệu XML được xem là hợp lệ và có giá trị khi toàn bộ các phần
tử trong tài liệu được định nghĩa kiểu (type definition)
Định nghĩa kiểu tư liệu (Document Type Definition - DTD) là cách thức
khai báo phần tử XML chỉ chứa đơn thuần dữ liệu text hay nó có chứa các phần tử con khác
Cú pháp: <!DOCTYPE Phần tử gốc [Khai báo về phần tử]>
Ví dụ về DTD:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE TAILIEU [
<!ELEMENT TAILIEU (nhande, tacgia, thongtinxuatban)>
<!ELEMENT> nhande (#PCDATA)>
Trang 20<!ELEMENT> tacgia (#PCDATA)>
<!ELEMENT> thongtinxuatban (noixb, nhaxb, namxb)>
<!ELEMENT> noixb (#PCDATA)>
<!ELEMENT> nhaxb (#PCDATA)>
<!ELEMENT> namxb (#PCDATA)>
]>
Ở đây, nhìn vào khai báo, ta có thể biết được ý nghĩa và cấu trúc của tài liệu: TAILIEU được định nghĩa (bằng khai báo <!DOCTYPE) là phần tử gốc Phần tử gốc chứa các phần tử con “nhande”, “tacgia”, “thongtinxuatban” Phần tử “nhande” chứa dữ liệu (#PCDATA), trong khi phần tử
“thongtinxuatban” chứa các phần tử con là “noixb”, “nhaxb”, “namxb”…
Khai báo phần tử:
Khai báo phần tử <!ELEMENT> được dùng để bắt đầu định nghĩa kiểu
tư liệu DTD cho một phần tử Khai báo phần tử có cú pháp:
<!ELEMENT Tên phần tử (Nội dung phần tử)>
Phần tử rỗng được khai báo với từ khóa EMPTY:
<!ELEMENT Tên phần tử EMPTY>
ANY:
Khi khai báo một phần tử với nội dung ANY có nghĩa là phần tử khai báo có thể chứa bất kỳ kiểu nội dung nào, kể cả mọi phần tử khác Nếu một phần tử được khai báo là ANY thì trình phân tích sẽ không kiểm tra cú pháp hay xác định tính hợp lệ của nội dung phần tử
Cú pháp: <!ELEMENT Tên phần tử ANY>
Phần tử có chứa phần tử con:
Trang 21 Khai báo phần tử DTD mà nội dung có thể chứa những phần tử con khác bằng cách định tên các phần tử con trong cặp dấu ngoặc đơn Cú pháp:
<!ELEMENT Tên phần tử (phần tử con 1, phần tử con 2,…)>
Khai báo phần tử con chỉ được xuất hiện một lần, cú pháp:
<!ELEMENT Tên phần tử (phần tử con)>
Ví dụ: <!ELEMENT SACH (tensach)> Trường hợp này, phần tử con
“tensach” chỉ được xuất hiện một lần trong phần tử SACH
Khai báo phần tử con xuất hiện ít nhất một lần, cú pháp:
<!ELEMENT Tên phần tử (phần tử con+)>
Ví dụ: <!ELEMENT SACH (tensach+)> Dấu + để khai báo rằng phần tử
“tensach” phải xuất hiện ít nhất một lần trong phần tử SACH
Khai báo phần tử con có thể 0 lần hoặc nhiều hơn, cú pháp:
<!ELEMENT Tên phần tử (phần tử con*)>
Khai báo phần tử con có thể xuất hiện 0 hoặc 1 lần, cú pháp:
<!ELEMENT Tên phần tử (phần tử con?)>
#PCDATA:
Khai báo định nghĩa #PCDATA cho biết phần tử đó chỉ chứa dữ liệu văn bản thô, không thuộc phần định dạng Có thể chứa bất kỳ dữ liệu văn bản nào trong #PCDATA (các dữ liệu này không được chứa thẻ định dạng), chúng
sẽ được trình phân tích xem như dữ liệu thể hiện của phần tử thẻ trong tài liệu XML
Cú pháp: <!ELEMENT Tên phần tử (#PCDATA)>
2.3.3 Bộ phân tích XML (XML Parser)
Bộ phân tích XML là các gói phần mềm được sử dụng như một phần kèm theo của ứng dụng Có rất nhiều thư viện cung cấp các hàm, cho phép
Trang 22phân tích nội dung và trích xuất dữ liệu của XML khá đơn giản Các trình phân tích và thư viện thường dùng nhất:
XML for Java (XML4J): Thư viện phân tích tài liệu XML phát triển bởi
IBM AlphaWorks Thư viện này rất nổi tiếng và được sử dụng rộng rãi trong hầu hết các ví dụ của W3C Địa chỉ tham khảo:
www.alphaworks.ibm.com/tech/xml4j
Microsoft XML Parser: Trình phân tích sử dụng bởi trình duyệt Internet
Explorer cài đặt thông qua kiến trúc COM của Windows Nếu sử dụng
hệ điều hành Windows với Internet Explorer 5 trở lên, thì trình phân tích này là có sẵn kèm theo Có thể download bản tách rời của trình phân tích này tại địa chỉ:
http://msdn.microsoft.com/downloads/tools/xmlparser
Java Standard Extension for XML: Đây là gói thư viện dành cho Java
xây dựng bởi SunMicrosystem Download gói này về dùng chung với các ứng dụng Java tại địa chỉ http://java.sun.com/products/xml
Python XML Parser: Trình phân tích tài liệu XML dựa vào ngôn ngữ
Python cho Linux và UNIX Địa chỉ http://www.python.org/topics/xml
Có thể sử dụng các máy tìm tin như Yahoo hay MSN để tìm kiếm các
bộ phân tích với từ khóa “XML Parser”
Các trình phân tích thường tách dữ liệu XML ra thành từng mẫu nhỏ và khiến chúng có thể truy xuất được bởi mã lệnh của chương trình Một vài trình phân tích kiêm luôn cả chức năng kiểm tra khuôn dạng hoặc tính hợp lệ của tài liệu XML Mặc dù vậy, nếu muốn có một công cụ vừa kiểm tra được lỗi hợp khuôn dạng vừa kiểm tra được tính hợp lệ của tài liệu XML, có thể cần đến những bộ kiểm tra chuyên dụng hơn
Trang 232.3.4 Bộ kiểm tra XML (XML Validator)
Để biết được tài liệu XML viết ra có đúng khuôn dạng và hợp lệ hay
không, ta sử dụng bộ kiểm tra XML (XML Validator) Bộ kiểm tra XML cho
phép khả năng mạnh mẽ kiểm tra tính đúng đắn của tài liệu XML trước khi đưa vào sử dụng Các bộ kiểm tra tính hợp lệ của XML là những gói phần mềm cho phép kiểm tra một số chuẩn trên XML và đưa ra lời nhận xét Ví dụ, nếu sử dụng bộ phân tích XML4J của IBM, có thể dùng đối tượng DOMWriter để làm bộ kiểm tra Validator, thực hiện kiểm tra tính hợp lệ của tài liệu XML
Nếu tài liệu XML hợp lệ, DOMWriter chỉ hiển thị lại nội dung file XML Tuy nhiên, nếu phát hiện các lỗi XML không hợp lệ, DOMWriter sẽ chỉ rõ vị trí của thẻ gây lỗi Nếu phát hiện bất kỳ lỗi nào, trình duyệt hay các
bộ phân tích XML cũng sẽ ngưng ngay quá trình xử lý và không bỏ qua lỗi như khi phân tích HTML
Tuy nhiên, kiểm tra tính hợp lệ của tài liệu XML theo cách trên đòi hỏi phải chạy trên Java Bộ kiểm tra tính hợp lệ của XML có thể là một chương trình Windows thông thường tương tự các trình soạn thảo Dưới đây là địa chỉ một số bộ kiểm tra XML, chúng không cần dùng đến Java như DOMWriter Tuy nhiên, các bộ kiểm tra Validator thường phân làm hai loại Loại ứng dụng cài đặt như một chương trình thông thường và một loại kiểm tra tài liệu trực tiếp trên Web
XML Writer, XML: Đây là trình soạn thảo và kiểm tra tính hợp lệ của tài
liệu XML rất đáng giá, là chương trình chạy độc lập
Tidy: Đây là chương trình C có cả mã nguồn hướng dẫn cách phân tích
và kiểm tra tính hợp lệ của tài liệu XML Mã nguồn Tidy miễn phí và có thể download từ địa chỉ http://www.w3.org/People/Raggett/tidy/
http://www.stg.brown.edu/service/xmlvalid/ là một địa chỉ cho phép kiểm
tra tính hợp lệ của tài liệu XML ngay trên internet
Trang 242.3.5 CSS và XSL
Muốn thể hiện nội dung của dữ liệu XML theo một định dạng tương tự HTML, phải dùng đến bảng định kiểu CSS và XSL CSS thích hợp để định dạng tài liệu hướng về HTML Có thể thay đổi font chữ, cỡ chữ, màu sắc, đặt hình ảnh và yêu cầu kết hợp định dạng của CSS với dữ liệu XML Bản thân XML chỉ định nghĩa cấu trúc và lưu trữ dữ liệu, nó không có khả năng tự hiển thị và trình diễn nội dung tài liệu CSS rút dữ liệu từ XML và đặt vào bảng định kiểu tạo thành một phiên bản trình diễn sau cùng Bảng định kiểu CSS sẽ được nói rõ hơn ở phần sau
XSL là một cách khác để hiển thị XML XSL (Extensible Style Language) là ngôn ngữ định kiểu mở rộng dựa trên cú pháp và nguyên tắc cấu
thành của XML XSL cho phép xử lý và trình diễn dữ liệu mạnh hơn CSS XSL là một ngôn ngữ định kiểu có khả năng điều khiển động các phần tử thẻ
và dữ liệu cần định dạng XSL có thể sắp xếp lại các thẻ trong tài liệu, thay đổi cả nội dung thẻ, hiển thị một phần hay toàn bộ nội dung dữ liệu Có thể nói, kết hợp XSL và XML là cách mạnh nhất để trình diễn và hiển thị dữ liệu
2.4 Bảng định kiểu CSS và XSLT
2.4.1 Hiển thị tài liệu XML với CSS
Bảng định kiểu CSS (Cascading style sheets) cung cấp một phương
thức để hiển thị file XML, nó tách biệt cách thức trình bày khỏi nội dung tài
liệu CSS có ba thành phần: hiển thị (layout), hình thức in (typography), và màu sắc (color) Bằng cách kết hợp file XML và file CSS, xử lý chúng với
một trình duyệt web sẽ giúp cho việc hiển thị nội dung tài liệu XML theo cách trình bày đẹp mắt và thu hút
File CSS được tạo nên bằng phần tử lựa chọn (selectors) và phần tử khai báo (declarations) Mỗi phần tử lựa chọn trong file CSS tương ứng với
một phần tử trong file XML Mỗi phần tử lựa chọn đi kèm với các khai báo để chỉ rõ cách thức mà tài liệu XML sẽ được hiển thị
Trang 25Một ví dụ đơn giản:
<?xml-stylesheet type="text/css" href="note.css"?>
<note>
<para>Ghi chú là những đoạn văn bản ngắn.</para>
<para>Chúng không chứa quá nhiều nội dung.</para>
</note>
Dòng khai báo đầu tiên báo cho trình ứng dụng biết sẽ đọc file XML và cho hiển thị nó sử dụng file CSS có tên là note.css Nếu muốn hiển thị nội dung file này giữa các đoạn văn cách nhau một dòng trống, thì file CSS sẽ như sau:
note { display: block; }
para { display: block; margin-bottom: 1em; }
Trong file CSS này, có 2 phần tử lựa chọn tương ứng với mỗi phần tử trong file XML: note và para Mỗi phần tử kết hợp với một hoặc một vài khai báo (cặp name/value) để mô tả cách mà nội dung phần tử đó sẽ được trình bày
Tên (name) được phân cách với giá trị (value) bằng dấu hai chấm (:), từng cặp
tên/giá trị phân cách với nhau bằng dấu chấm phẩy (;), tất cả các khai báo liên kết với phần tử lựa chọn được nhóm với nhau bằng cặp dấu ngoặc nhọn {}
Có một điều lưu ý đó là không phải tất cả các trình duyệt web đều hỗ trợ CSS như nhau Với Netscape Navigator 4.7 và Internet Explorer 5.0, việc hiển thị chỉ ở mức độ tối thiểu Từ Mozilla 1.0 và Internet Explorer 6.0 thì việc thực hiện đã tốt hơn nhiều
Hiển thị (Display):
Thuộc tính hiển thị được dùng để chỉ ra một phần tử dữ liệu có được hiển thị hay không, và nếu có thì sẽ hiển thị theo cách nào (ở đây chỉ là những cách hiển thị thông thường) Các giá trị quan trọng nhất để hiển thị là: Theo
Trang 26dòng (inline), Theo khối (block), Liệt kê danh sách (list-item), hoặc Không hiển thị (none)
Hiển thị theo dòng là giá trị mặc định, nghĩa là toàn bộ nội dung của phần tử dữ liệu sẽ hiển thị liền mạch, không xuống dòng
Hiển thị theo khối nghĩa là sau nội dung của một phần tử sẽ xuống một dòng Nếu có nhiều đoạn văn, ta sử dụng cách hiển thị theo khối
Hiển thị theo dạng liệt kê cũng tương tự như hiển thị theo khối, nó sẽ hiển thị lùi đầu dòng văn bản chỉ một ít
Không hiển thị (giá trị none) nghĩa là nội dung phần tử dữ liệu sẽ
không hiện ra, nó là nội dung ẩn
Ví dụ: margin: 5%;
margin: 10px;
margin-top: 2em;
margin-left: 85%;
Trang 27margin-right: 50px;
margin-bottom: 1em;
Lùi đầu dòng (Text-indent):
Cũng tương tự thuộc tính lề, thuộc tính lùi đầu dòng có thể lấy giá trị bằng phần trăm, pixels, hoặc đơn vị in Thuộc tính này được sử dụng để chỉ ra những dòng cụ thể nào trong khối văn bản được lùi đầu dòng
text-align: right;
text-align: left;
text-align: center;
text-align: justify;
Kiểu biểu tượng đánh dấu đầu dòng (List-style):
Nếu muốn sử dụng biểu tượng đánh dấu đầu dòng, trước hết ta nên lựa
chọn kiểu hiển thị liệt kê (list-item), sau đó định các giá trị kiểu biểu tượng
muốn hiển thị đầu dòng như: hình tròn, hình vuông, đánh số thứ tự…
list-style: circle;
list-style: square;
list-style: disc;
list-style: decimal;
Trang 28Kiểu chữ (Font-family):
Giá trị kiểu chữ bao gồm tên font chữ và tên của bộ font chữ đó như serif hoặc sans-serif
Ví dụ: font-family: helvetica;
font-family: times, serif;
font-family: 'cosmic cartoon', sans-serif;
Sử dụng thuộc tính kiểu font chữ để định cách hiển thị chữ, các giá trị
thông thường là: chữ thường (normal), chữ nghiêng (italic), chữ đậm (bold)
Kiểu font chia thành font-style và font-weight
Ví dụ: font-style: normal;
font-style: italic;
font-weight: normal;
font-weight: bold;
2.4.2 Chuyển đổi XML với XSLT
Ngoài việc sử dụng file CSS, có một phương thức khác để chuyển đổi tài liệu XML thành dạng tài liệu có thể đọc Đó là Ngôn ngữ định kiểu mở
Trang 29rộng dùng cho chuyển đổi - XSLT (Extensible Stylesheet Language Tranformation) XSLT là ngôn ngữ lập trình được thực hiện như một cấu trúc
ngữ nghĩa của XML Cũng như CSS, đầu tiên ta tạo một file XML, tiếp theo viết một file XSLT, sau đó dùng chương trình máy tính kết hợp hai file này tạo thành một file thứ ba
Ở góc độ tài liệu XSLT, dữ liệu đầu vào là một tập hợp các nút (node)
Có 7 loại nút mà bộ xử lý XSL có thể nhận dạng và chuyển dịch:
Gốc tài liệu (Document root) Thuộc tính (Attribute)
Chú thích (Comment) Phần tử (Element) Không gian tên (Namespace) Chỉ thị xử lý (Processing íntruction) Văn bản (Text)
2.5 XML và HTML
XML có nguồn gốc giống như HTML, cùng bắt nguồn từ ngôn ngữ đánh dấu tổng quát chuẩn - SGML Văn bản XML và HTML đều sử dụng các
thẻ (tags), các phần tử được đặt trong cặp dấu “<” và “>” (mở và đóng) và
dùng thuộc tính của các phần tử với cú pháp name= “value”
XML là ngôn ngữ mở rộng so với HTML HTML là một ứng dụng của SGML, còn XML là một tập con của SGML Hầu hết tài liệu HTML có thể định nghĩa được trong XML, chính vì vậy, dễ dàng để tương thích XML với các trang HTML có sẵn
Trong khi HTML đặc biệt chú ý tới việc từng thẻ và thuộc tính có ý nghĩa gì và phần văn bản giữa các thẻ đó hiển thị như thế nào trên trình duyệt thì XML sử dụng các thẻ chỉ để phân định ranh giới giữa các đoạn dữ liệu còn
Trang 30việc đọc và xử lý dữ liệu hoàn toàn là nhiệm vụ của các ứng dụng Khác với HTML, số lượng và tên gọi các phần tử trong XML là không hạn chế
XML là một văn bản nhưng không giống với những loại văn bản thông thường mà ta có thể đọc được Một thuận lợi của khuôn dạng văn bản là cho phép người đọc có thể đọc nó với bất kỳ bộ soạn thảo văn bản nào tùy thích Các khuôn dạng văn bản cũng cho phép tìm lỗi dễ dàng hơn trong các ứng dụng Giống như HTML, các file XML là những file văn bản được tạo ra không phải với mục đích đề đọc, nhưng vẫn có thể đọc nếu thấy cần thiết Tuy nhiên XML có điểm không bằng HTML, các luật dùng trong XML rất khắt khe, chỉ cần quên một thẻ, hay một thuộc tính không đi kèm với nội dung
sẽ làm cho toàn bộ file XML đó ngừng hoạt động, trong khi đó lỗi này ở file HTML có thể được bỏ qua
XML được xem như là ngôn ngữ mạnh hơn HTML do nó mang lại thông tin đầy đủ về dữ liệu XML cung cấp “siêu dữ liệu” metadata hay còn được gọi là “dữ liệu về dữ liệu” (data about data) XML cho phép các nhà phát triển và quản trị công nghệ thông tin mô tả thông tin có liên quan tới các nguồn thông tin khác Ngôn ngữ XML là giải pháp tích hợp cho vấn đề trao đổi dữ liệu tự động giữa các kho thông tin trên mạng Internet
Trang 31CHƯƠNG 3 MỘT SỐ ỨNG DỤNG XML TRONG LĨNH VỰC
THÔNG TIN - THƯ VIỆN
3.1 MARC XML
Như chúng ta đã biết, khổ mẫu MARC (Machine Readable Catalog) là
khổ mẫu mô tả tài liệu đang được sử dụng phổ biến Trung tâm phát triển mạng và tiêu chuẩn MARC của Thư viện Quốc hội Hoa Kỳ đã nghiên cứu và phát triển một khổ mẫu để làm việc với dữ liệu MARC trong môi trường XML Khổ mẫu này linh hoạt và mở rộng cho phép người sử dụng làm việc với dữ liệu MARC theo những cách tiếp cận cụ thể mà họ muốn Khổ mẫu bao gồm nhiểu thành tố như lược đồ, bảng định kiểu, và các công cụ phần mềm được phát triển và duy trì bởi Thư viện Quốc hội
Có thể hình dung MARC-XML như hai cái cổng của một ngôi nhà Cổng MARC kèm theo giao thức Z39.50 là cổng được sử dụng từ trước đến giờ để trao đổi biểu ghi thư mục Ngày nay yêu cầu trao đổi thông tin không dừng lại ở thông tin dạng thư mục mà cần cao cấp hơn (hình ảnh, hình động,
âm thanh…), cổng MARC không đảm đương được việc này, cần có một cổng hiện đại hơn, và đó chính là cổng XML có thể trao đổi được tất cả các dạng thông tin
MARC XML được sử dụng cho các vấn đề như sau:
Mô tả một biểu ghi MARC hoàn chỉnh trong môi trường XML
Sử dụng như một lược đồ mở rộng cho Chuẩn mã hóa và truyền tải
siêu dữ liệu (Metadata Encoding and Transmission Standard - METS)
Dùng để mô tả siêu dữ liệu cho giao thức “gặt hái siêu dữ liệu” OAI
(Open Archives Initiative - Protocol for Metadata Harvesting)
Mô tả nguồn thông tin gốc với cú pháp XML
Trang 32 Có thể bao gói siêu dữ liệu XML
Một vài thuận lợi của MARC XML:
Lược đồ MARC XML hỗ trợ tất cả các định dạng dữ liệu mã hóa của MARC
Khổ mẫu MARC XML là một thành phần có định hướng, cấu trúc
mở rộng cho phép người sử dụng thực hiện bằng nhiều mảnh phần mềm khác nhau để xây dựng giải pháp
Giới hạn đối với MARC XML: Tính hợp lệ của MARC không bị chi phối bởi lược đồ cấu trúc mà bởi phần mềm bên ngoài
định trong 5 khổ mẫu USMARC: Khổ mẫu thư mục (Bibliographic); Khổ mẫu nhất quán (Authority); Khổ mẫu lưu trữ (Holdings); Khổ mẫu phân loại (Classification); và Khổ mẫu cộng đồng (Community)
MARC-SGML được thiết kế để làm cấu trúc thay thế cho thông tin trong các biểu ghi cấu trúc MARC chuẩn (ISO 2709) Việc ứng dụng MARC-SGML cung cấp sơ đồ cấu trúc đầy đủ giữa hai chuẩn dữ liệu MARC-SGML