Nội dung• Mục đích: – Giới thiệu một số nét chính về lịch sử của XML, phạm vi và mục đích của XML và nội dung chính của môn học • Nội dung chính của chương bao gồm: – Giới thiệu tổng q
Trang 1Ngôn ngữ đánh dấu mở rộng
XML
TS Nguyễn Thanh Bình
Trang 4Nội dung
• Mục đích:
– Giới thiệu một số nét chính về lịch sử của XML, phạm vi và mục đích của XML và nội dung chính của môn học
• Nội dung chính của chương bao gồm:
– Giới thiệu tổng quan về ngôn ngữ đánh dấu và XML
• Lịch sử của việc đánh dấu và ngôn ngữ đánh dấu
• Sự phát triển của ngôn ngữ đánh dấu
• Kiến trúc 3 tầng của XML
• Các vùng ứng dụng của XML
• Các ưu điểm của XML và khi nào không cần đến XML
• Các công nghệ liên quan đến XML
– Tài liệu XML
• Các công cụ hỗ trợ
• Định dạng tài liệu XML
Trang 5• XML đã được thiết kế cho việc miêu tả dữ liệu
• Các thẻ XML không được định nghĩa trước
• XML sử dụng định nghĩa kiểu dữ liệu
(Document Type Definition -DTD) hoặc lược đồ XML (XML Schema) để miêu tả dữ liệu
• XML cùng với DTD hay XML Schema được thiết
kế để tự miêu tả dữ liệu
Trang 7Lịch sử của việc đánh dấu
Documents recorded
using paper and pen Typesetters formatting documents
Tools used by typesetters
to format a document
Trang 8Ngôn ngữ đánh dấu
• Một ngôn ngữ đánh dấu định nghĩa các luật, các luật này dùng để mô tả nội dung và cấu trúc của tài liệu
• Chúng được phân loại như sau:
– Stylistic Markup – Xác định sự trình bày của tài liệu
– Structure Markup – Định nghĩa cấu trúc của tài liệu
– Semantic Markup – Xác định nội dung của tài liệu
Trang 9Sự phát triển của ngôn ngữ đánh dấu
Trang 10– Tách bạch giữa nội dung, cấu trúc và kiểu
– Tập trung vào cấu trúc và nội dung
– Tương tự như XML, nhưng phức tạp hơn
Trang 11Điểm đặc trưng của SGML
• Miêu tả ngôn ngữ đánh dấu, cho phép tạo các thẻ riêng liên quan đến nội
dung.
• Mục đích của SGML:
– Thể hiện chung tài liệu
– Cung cấp một số luật cho tập các tài liệu (DTD)
• XML là một tập con của SGML
• HTML là một ứng dụng của SGML
Trang 12• HTML là một ngôn ngữ định dạng/đánh dấu quen thuộc, thông dụng được trích ra từ
SGML (HTML có thể coi là một ứng dụng của SGML)
• HTML ban đầu được tạo ra dùng cho việc
định dạng cáca bài báo kỹ thuật để chúng có thể được trao đổi giữa các cộng đồng khoa học
• Ngày nay HTML cũng được sử dụng cho các người dùng bình thường cho việc thể hiện
các tài liệu
Trang 13• Không hỗ trợ việc trao đổi dữ liệu
• Không có các cơ chế liên kết tinh xảo
• Không hỗ trợ việc sử dụng lại
Trang 14<LI> COMPANY : XYZ Corp.
<LI> Email : tom@usa.net
<LI> Phone : 3336767
<LI> Street Adress : 25th St.
<LI> City : Toronto
<LI> State : Toronto
<City> Toronto </City>
<State> Toronto </State>
<ZIP> 20056 </ZIP>
</CONTACT>
</Details>
Trang 15• Đơn giản và dễ dùng hơn SGML
• XML cho phép người dùng định nghĩa một
tập riêng các thẻ và cho phép người khác có thể hiểu được
• XML thừa kế các nét đặc trưng của SGML và HTML
Trang 16• XML là một siêu ngôn ngữ dùng để miêu tả các ngôn ngữ khác
– XHTML: một định nghĩa lại của HTML trong XML
• Là một ngôn ngữ có cấu trúc và ngữ nghĩa
– Ngữ nghĩa ở đây là việc đưa ý nghĩa vào các thẻ
• Dữ liệu chứa trong các file XML có thể được thể hiện bằng nhiều cách
• Các file XML có thể được xử lý bằng nhiều ứng dụng khác nhau
• Các tờ mẫu giúp việc chuyển đổi dữ liệu có cấu trúc
và các khung nhìn HTML khác nhau Điều này đảm bảo dữ liệu có thể hiển thị trên nhiều trình duyệt khác nhau
Trang 17Kiến trúc 3 tầng
Trang 19Kiến trúc XML
Trang 20Các vùng ứng dụng của XML
• Trong WWW
– Nhiều khả năng khác nhau
• Sản sinh tự động các cấu trúc duyệt
• Trao đổi dữ liệu, tương tác dữ liệu
– SOAP
– Trong các ứng dụng thương mại điện tử
– Dữ liệu được cấu trúc và tích hợp
• Định rõ các quan hệ giữa các yếu tố ‚elements‘
• Thu thập dữ liệu từ các nguồn đa tạp
• Tạo ra các ngôn ngữ đánh dấu của các miền riêng:
– MathML, SVG, MusicML, SMIL, CML, RDF
Trang 21Các ứng dụng XML
• Clinical Trial Data Model for drug trials
• National Library of Medicine (NLM) XML Data Formats for
MEDLINE data over FTP replacing ELHILL Unit Record Format (EURF) on magnetic tape
• Health Level Seven XML Patient Record Architecture
• ASTM XML Document Type Definitions (DTDs) for Health Care
• Molecular Dynamics Markup Language (MoDL)
• BIOpolymer Markup Language (BIOML)
• Gene Expression Markup Language (GEML)
• Chemical Markup Language
• Bioinformatic Sequence Markup Language
• Open Financial Exchange
• Human Resources Markup Language
• XML Court Interface
• and many more
Trang 22Ưu điểm của XML
Trang 23Khi nào không cần XML
• XML không phải là ngôn ngữ định dạng
• Không tối ưu cho dữ liệu nhị phân
– XML-text-> chỉ có thể sử dụng XML để
miêu tả dữ liệu (siêu ngôn ngữ)
• Không hiệu quả cho việc mã hóa:
– Được làm để có thể đọc được dễ dàng bởi
cả người và máy
Trang 24Các công nghệ liên quan
Trang 26Soạn thảo và lưu giữ tài liệu
XML
• Bằng các hệ soạn thảo hổ trợ mã ASCII hoặc UTF-8:
– Windows: notepad, wordpad
– Linux/Unix: vi, emacs
• Phần mở rộng chuẩn là xml
• Một số hệ soạn thảo chuẩn:
– XML Notepad của Microsoft:
http://www.microsoft.com/xml/notepad/
– XML Writer: http://www.xmlwriter.net
– XML Spy: http://www.xmlspy.com
Trang 27Trình duyệt XML
• Một trình duyệt hỗ trợ cả XML, HTML, CSS XSL cùng với ngôn ngữ lập trình Script (ví dụ như Java Script)
– Internet Explorer
• Hiển thị trực tiếp tài liệu XML
– Netscape
– Jumbo
Trang 28Bộ phân tích XML (XML Parser)
• Là các gói phần mềm được sử dụng để phân tích tài liệu XML
Trang 29Bộ kiểm tra XML (XML Validator)
• Bộ kiểm tra XML dùng để kiểm tra tài liệu
XML có đúng khuôn dạng và hợp lệ hay
không
• Là một gói phần mềm cho phép kiểm tra một
số chuẩn trên XML và đưa ra đánh giá
• Ví dụ:
– XML4J sẽ đi cùng với DOMWriter
• Có 2 loại XML Validator:
– Loại ứng dụng cài đặt: XML Writer, Tidy
– Loại kiểm tra trực tiếp trên Web:
• http://www.stg.brown.edu/service/xmlvalid/
Trang 31Tài liệu XML hợp khuôn dạng
• Một tài liệu XML phải tuân theo qui tắc cú
pháp thiết lập cho XML bởi tổ chức W3C-> hợp khuôn dạng (well-formed)
• Các luật hợp khuôn dạng:
– Các thẻ phải có đóng và mở
– Thẻ trống phải kết thúc với />
– Chỉ có duy nhất một yếu tố gốc (root element)
– Các yếu tố không được trùng nhau
– Các giá trị thuộc tính (Attribute values) phải được trích dẫn
Trang 33Định dạng tài liệu XML
• XML là tài liệu được định dạng theo cây
• Một cây chứa các mục
Trang 34• Tất cả dữ liệu còn lại không phải là định dạng đều xem là dữ liệu kí tự
Trang 36Khoảng trắng
• Các kí tự như Spacebar, backspace, Tab, Enter đều được xem là khoảng trắng trong XML
Trang 37Khai báo tài liệu XML
Trang 38Định nghĩa kiểu tài liệu
• DOCTYPE (Document Type Definition)- Định nghĩa kiểu tài liệu
– Chỉ được yêu cầu cho việc xác định tính hợp lệ của tài liệu
– Định nghĩa tài liệu phải được tổ chức thế nào
<!DOCTYPE note SYSTEM "note.dtd">
Trang 39– Chú thích không được đặt trước khai báo
– Chú thích không được đặt vào trong phần định dạng
– Không được dùng chuỗi - - bên trong chú thích
Trang 40encoding="ISO-<!DOCTYPE note SYSTEM
Trang 41Chỉ thị xử lí
• Các chỉ thị xử lí dùng để chỉ dẫn cho bộ phân tích cách xử lí tài liệu XML
Trang 46Quan hệ giữa các phần tử
<book>
<title>My First XML</title>
<prod id="33-657" media="paper"></prod>
<para>Elements must have a closing tag</para>
<para>Elements must be properly nested</para>
Trang 47Thuộc tính (Attribute)
• Thuộc tính (Attribute)
– dùng để cung cấp thông tin thêm vào về các phần tử
– thuộc tính được đặt bên trong thẻ mở và thẻ rỗng
• Thuộc tính (attribute) của các thẻ trong tài liệu của XML tương
tự như của các thẻ HTML
• Cú pháp: name=“value” hoặc name=‘value’
• Ví dụ:
– <person sex="female"> <person sex=‘female‘>
– <gangster name='George "Shotgun" Ziegler'>
– <gangster name="George 'Shotgun' Ziegler">
• Attribute có thể trống
• Phần tử có thể có nhiều thuộc tính
– Nhưng không được trùng tên
– Không chứa các kí tự đặc biệt
– Không có thuộc tính con
Trang 48Sử dụng thuộc tính và phần tử
• Dữ liệu có thể được chứa trong các phần tử
con hoặc các thuộc tính
Hai ví dụ trên về nội dung thì đều giống nhau
Không có một qui tắc hay luật nào để xác định cách nào là tốt hơn
Trang 49Nhiều cách thể hiện thuộc tính
Trang 50Các qui ước của thuộc tính
• Thuộc tính có thể được định kiểu
– CDATA, ID, IDREF
– Được định kiểu trong DTD
Trang 51Các lỗi khi sử dụng thuộc tính
• Thuộc tính không thể là đa trị
• Các thuộc tính không thể mở rộng dễ dàng
• Các thuộc tính không thể miêu tả cấu trúc
• Khó có thể kiểm thử các giá trị thuộc tính thông qua DTD
Trang 52– Các nút con của cây XML kế thừa namespaces
của các nút cha và có thể ghi đè
Trang 53Sự xung đột trong việc đặt tên
• XML cho phép đặt tên tự do cho các thẻ có thể dẫn
đến vấn đề là 2 tài liệu khác nhau sẽ cung cấp tên
trùng nhau nhưng dùng để miêu tả 2 phần tử khác
nhau
• Khi hai tài liệu này kết nối với nhau sẽ dẫn đến hiện
tượng xung đột tên
Trang 54Giải quyết vấn đề xung đột tên
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
Trang 55Sử dụng không gian tên (namespace)
• Không những sử dụng tiền tố, thuộc tính xmlns đã được
sử dụng trong 2 ví dụ để cung cấp các tên chất lượng
(qualified name) tương ứng với không gian tên
Trang 56Thuộc tính không gian tên
• Thuộc tính không gian tên được sử dung trong thẻ mở của một phần tử và có cú pháp như sau:
– xmlns:namespace-prefix="namespace"
• Trong ví dụ trước chúng ta sử dụng :
– xmlns:f= http://www.w3schools.com/furniture
• Theo đặc tả của W3C thì không gian tên phải là định danh tài
nguyên thống nhất (Uniform Resource Identifier -URI)
• Khi một không gian tên được định nghĩa cho một thẻ mở của một thành phần thì tất cả các thẻ con với cung tiền tố đều
tương ứng với một không gian tên
• Địa chỉ sử dụng để xác định không gian tên không phải được
sử dụng bởi bộ phân tích để tìm kiếm thông tin Mục đích chính
là chỉ ra sư duy nhất của tên
Trang 57URL và URI
• URLs: định vị tài nguyên đồng nhất (Uniform Resource Locators)
– Là địa chỉ liên kết dùng rất phổ biến trong Internet
• XML mở rộng khái niệm URL của HTML
thành URIs (Uniform Resource Identifiers) : định danh tài nguyên đồng nhất
– URI cho phép diễn đạt cách truy tìm tài nguyên
trên internet
– URI tập trung vào khái niệm của tài nguyên hơn là
vị trí thật sự nơi tài nguyên lưu trú
Trang 58Không gian tên mặc định
• Việc định nghĩa một không gian tên mặc định cho một phần tử sẽ tránh cho chúng ta việc
sử dụng tiền tố cho tất cả các phần tử con
Trang 59• Dữ liệu text chứa các chuổi và kí tự
• Bộ phân tích XML sẽ phân tích toàn bộ Text trong tài liệu XML
• Bộ phân tích sẽ báo lỗi khi gặp các kí tự đặc biệt như > , &
• Để tránh lỗi đó chúng ta phải sử dụng bảng tham chiếu thực thể
< < less than
> > greater than
& & ampersand
' ‚ apostrophe
" „ quotation mark
<message>if salary < 1000 then</message>
<message>if salary < 1000 then</message>
Trang 60Phân đoạn CDATA
• Việc đặt nội dung dữ liệu trong tài liệu XML bao hàm các kí tự đặc biệt như > hay & là một vấn đề
• Việc đặt một tài liệu XML (nguồn) vào một tài liệu XML khác (đích) sẽ bị xáo trộn bởi các thẻ nhập từ tài liệu nguồn
– Để giải quyết vấn đề này chúng ta coi tài liệu nguồn như là
dữ liệu CDATA được đề xuất cho mục đích này
• CDATA là một phần tử nhưng bao gồm chỉ một thẻ theo cú pháp:
– <![CDATA ]]>
• Tất cả những gì nằm trong CDATA đều sẽ được bỏ qua bởi bộ phân tích
Trang 62<chapter> 2</chapter>
<short> DTD </short>
<long_en> Data Type Definition</long_en>
<long_vn> Định nghĩa kiểu tài liệu </long_vn>
<lecturer> Nguyễn Thanh Bình </lecturer>
Trang 64• Các tài liệu XML trích dẫn đến tài liệu DTD sẽ
chứa khai báo <!DOCTYPE>
• Có 2 loại DTD:
– DTD ngoại
– DTD nội
Trang 65• DTD định nghĩa các khối xây dựng hợp lệ
của một tài liệu XML
Trang 66Cấu trúc của DTD
<!DOCTYPE dtd-name [
<!ELEMENT element-name (element-content type) >
<!ATTLIST element-name attribute-name attribute-type default-value>
Trang 67Các khối xây dựng của tài liệu XML
• Các khối xây dựng của các tài liệu XML và HTML là các thẻ như <body> </body>
• Theo quan điểm của DTD tất cả các tài liệu XML và cả HTML đều được xây dựng từ các khối sau:
Trang 68Khai báo phần tử
• Các phần tử (Elements) là các khối xây dựng chính của cả tài liệu XML và HTML
• Ví dụ của HTML là "body" và "table" Ví dụ
của XML có thể là "note" và "message"
• Các phần tử XML được khai báo với một
khai báo !ELEMENT trong DTD
Trang 69Khai báo phần tử rỗng
• Phần tử rỗng (EMPTY element)-kiểu nội dung chỉ rõ phần tử đó không có các phần tử con hay dữ liệu kí tự
Trang 70#CDATA = phần tử chứa các dữ liệu kí tự và không được phân tích
#PCDATA = phần tử chứa dữ liệu kí tự để phân tích
ANY = phần tử với bất cứ nội dung nào
Trang 71• #PCDATA có nghĩa là dữ liệu kí tự được
phân tích (Parsed Character Data)
• #PCDATA là văn bản được phân tích bởi bộ phân tích
• Tất cả các dữ liệu thô không thuộc phần định dạng được tham chiếu bởi định nghĩa
#PCDATA
• #PCDATA đơn thuần biểu diễn dữ liệu thô
• Dữ liệu văn bản thô không cho biết thêm
thông tin gì khác ngoài tính chất văn bản của nó
Trang 72<year> The year of our Lord
one thousand, nine hundred,
Trang 73dung phần tử
Trang 74<!ELEMENT from (#CDATA)>
<!ELEMENT heading (#CDATA)>
<!ELEMENT body (#CDATA)>
Trang 75Khai báo các phần tử xuất hiện nhiều lần
Trang 77Ví dụ về việc sử dụng kí tự thay thế
<!DOCTYPE CATALOG [
<!ENTITY AUTHOR "John Doe">
<!ENTITY COMPANY "JD Power Tools,
Inc.">
<!ENTITY EMAIL "jd@jd-tools.com">
<!ELEMENT CATALOG (PRODUCT+)>
<!ELEMENT OPTIONS (#PCDATA)>
<!ATTLIST OPTIONS FINISH (Metal|Polished|Matte) "Matte"
SHIPPING CDATA #IMPLIED>
<!ELEMENT NOTES (#PCDATA)>]>
Trang 79Việc khai báo nội dung hỗn hợp
• Dùng để định nghĩa phần tử vừa có khả năng chứa
dữ liệu thuần văn bản vừa chứa dữ liệu thể hiện
phần định dạng
• Các định nghĩa phần tử DTD kiểu này được gọi là định nghĩa kiểu nội dung hỗn hợp Một phần tử có thể có một liên kết trộn lẫn của các phần tử con
Trang 80• Phần tử A chứa một danh sách chuỗi các
phần tử con, trong đó có chứa các nhóm con
là các phần tử chọn lựa
<!ELEMENT A (B, (C | D), E>
Trang 82<!DOCTYPE root-element
[element-declarations]>
DTD nội
• Nó được ghi vào bên trong
tài liệu XML ngay sau phần
khai báo XML
• Ghi DTD vào trong phần
định nghĩa DOCTYPE gọi là
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
Trang 83ELEMENT to (#PCDATA)> <! ELEMENT from (#PCDATA)> <! ELEMENT heading
(#PCDATA)>
<!ELEMENT body (#PCDATA)>
Trang 84Sử dụng DTD với URL
• Chúng ta có thể chỉ định đường dẫn đến các file DTD tham chiếu ngoại
• Trong ngữ cảnh của www một tài liệu DTD ngoại có thể truy xuất theo địa chỉ tuyệt
đối URLs
• Ví dụ:
<!ENTITY % xhtml1 SYSTEM "http://www.w3.org/ TR/xhtml1/DTD/strict.dtd">
Trang 85Tham chiếu DTD dùng chung
• Khi đặt thuộc tính PUBLIC vào chỉ thị
khai báo <!DOCTYPE>, các thẻ DTD có
thể làm tham chiếu dùng chung liên kết
với nhiều tài liệu
Trang 86Sử dụng chung tham chiếu nội và
tham chiếu ngoại
• Có thể sử dụng chung hai tham chiếu nội và ngoại trong cùng tài liệu XML cùng một thời điểm
<!DOCTYPE BOOK PUBLIC "-//Joseph Smith//General Book
Version 5.3//EN" "http://www.library.org/book.dtd">