Hình 2 – 1: Dạng cây của tài liệu XML trong XpathXpath sử dụng location path để đưa ra các nút hay là tập hợp các nút node-sets.. Mô hình dữ liệu trong Xpath Khái niệm chung Mô hình Xpat
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
PHÂN TÍCH DỮ LIỆU XML
VÀ ỨNG DỤNG
Nhóm 21: Lê Cao Vinh
Trần Thanh Phong Giảng viên: TS.Nguyễn Hà Nam
HÀ NỘI - 2012
Trang 2MỤC LỤC
DANH MỤC HÌNH VẼ ii
DANH MỤC BẢNG BIỂU ii
I XML 1
1 Khái niệm 1
2 Ý nghĩa 2
3 Ứng dụng thực tiễn 3
II XPath 7
1 Giới thiệu 7
2 Mô hình dữ liệu trong Xpath 9
3 Location Steps và Paths 14
4 Biểu thức điều kiện 16
5 Mối liên hệ trong Xpath 17
6 Hàm và toán tử trong Xpath 17
III ỨNG DỤNG PHÂN TÍCH XML 21
1 Bài toán 21
2 Mô hình ứng dụng 22
3 Kết quả 25
4 Hướng phát triển 25
IV KẾT LUẬN 26
V TÀI LIỆU THAM KHẢO 27
Trang 3I DANH MỤC HÌNH VẼ
Hình 1 – 1: Tài liệu MathML hiển thị trên trình duyệt 5
Hình 1 – 2: Tài liệu XHTML hiển thị trên trình duyệt 6
Hình 2 – 1: Dạng cây của tài liệu XML trong Xpath 8
Hình 2 – 2: Truy cập nút <planets> 11
Hình 2 – 3: Toán tử kết hợp trong Xpath 20
Hình 3 – 1: Mô hình ứng dụng 22
Hình 3 – 2: Lược đồ cơ sở dữ liệu 24
Hình 3 – 3: Trang tổng hợp tin demo 25
DANH MỤC BẢNG BIỂU Bảng 2.1: Giá trị của nút 13
Bảng 2.2: Quan hệ trong Xpath 17
Bảng 2.3: Toán tử logic trong Xpath 17
Bảng 2.4: Các hàm Boolean trong Xpath 18
Bảng 2.5: Các hàm xử lý số trong Xpath 18
Bảng 2.6: Các hàm xử lý xâu ký tự trong Xpath 19
Trang 4II XML
1 Khái niệm
XML, viết tắt của cụm từ tiếng Anh “eXtensible Markup Language” (ngônngữ đánh dấu có thể mở rộng), là ngôn ngữ được định nghĩa bởi tổ chức mạng toàncầu (World Wide Web Comsortium – W3C) Đây là một tổ chức quốc tế định ra cácchuẩn của Web và Internet XML là một cú pháp thông dụng cho việc biểu thị cấutrúc trong dữ liệu Dữ liệu có cấu trúc tham chiếu đến dữ liệu được gán nhãn chonội dung, ý nghĩa, hoặc công dụng Ta hãy quan sát một tài liệu XML cụ thể nhưsau:
Tài liệu trên lữu trữ thông tin về các quyển sách của một cửa hàng sách.Thông tin về sách được lưu trữ gồm có: tựa đề, tác giả, năm xuất bản và giá bán Ta
có thể thấy rằng, XML dùng các cặp thẻ (tags) để mô tả cấu trúc và ý nghĩa cácthành phần dữ liệu XML thì cho phép ta tự do đặt tên các thẻ và sử dụng khi cần
Ta có thể đặt không giới hạn các thẻ và sắp xếp chúng tùy theo mục đích Điều này
<?xml version=”1.0”>
<bookstore>
<book >
<title>Góc sân và khoảng trời</title>
<author>Trần Đăng Khoa</author>
Trang 52 Ý nghĩa
XML trở nên phổ biến có rất nhiều nguyên do và chúng ta sẽ xem xét các lợithế mà XML mang lại
Dễ dàng trao đổi dữ liệu.
Hiện nay, ta có thể thấy rằng có rất nhiều định dạng file Ví dụ như file *.doc(Word), *.xls (Excel), *.mdb (access), *.txt (Text file), … Việc chuyển đổi dữ liệugiữa chúng là rất khó khăn cho dù đã có không ít trình ứng dụng hỗ trợ Khi bạnviế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áocáo ra những định dạng này Một công việc không phải đơn giản chưa kể cùng mộtchủng loại file có thể có nhiều phiên bản định dạng khác nhau Nếu dữ liệu cảu filechỉ được lưu theo dạng text thì mọi việc trở nên đơn giản Lý do là file text có thểđọc được bởi hầu hết như tất cả các trình ứng dụng Mặc dù vậy, file text lại khó cóthể bố trí dữ liệu theo cấu trúc XML đã giải quyết được vấn đề này
Trong XML, dữ liệu và định dạng được lưu ở dạng text và bạn có thể cấuhình cũng như thay đổi chúng bằng các trình soạn thảo thông thường, đơn giản nhất
là notepad trong Windows Ta cũng dễ dàng hiện thị cấu trúc dữ liệu bằng cách sắpxếp các thẻ XML
Một lợi thế của XML trong việc lưu trữ dữ liệu là XML đã được chuẩn hóa
và mọi người đều có thể hiểu và sử dụng nó
Như vây, XML cung cấp cách lưu trữ và trao đổi dữ liệu rất hiệu quả
Tùy biến ngôn ngữ định dạng
Một trong những khả năng mạnh nhất của XML là ta có thể tạo ra các ngônngữ định dạng tùy biến dựa trên XML Khi bạn và một tập thể nhóm thỏa thuậnbằng một ngôn ngữ định dạng nào đó (theo một tập thẻ quy ước), bạn có thể tùybiến trình duyệt hoặc ứng dụng để nó xử lý theo ngôn ngữ định dạng của bạn Đã cóhàng trăm ngôn ngữ định dạng chuyên dụng dựa trên XML đã ra đời Ta có thể kể
ra vài ngôn ngữ như:
- MathML (Math Markup Language) – ngôn ngữ định dạng toán học
- XHTML (eXtensible HyperText Markup Language)
- …
Trang 6Bạn không những có thể tạo ra một tập ngôn ngữ con dựa vào XML mà 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 hoàn toàn
có quyền thêm vào các thẻ khác, mà theo đó sẽ giúp bạn thực hiện diễn đạt cũngnhư lưu trữ dễ dàng hơn
Dữ liệu tự mô tả.
Dữ liệu trong tài liệu XML tự mô tả nội dung và ý nghĩa của nó Chỉ dựa vàocác tên thẻ được đặt cho các thẻ XML, ta có thể hình dung ra nội dung và các dữliệu muốn thể hiện Quay trở lại với tài liệu XML đã được đưa ra ở hình 1 – 1 Đó làtài liệu lữu trữ thông tin về các quyển sách của một cửa hàng sách Dựa vào cặp thẻ
<title> ta có thể biết được tiêu đề sách, dựa vào cặp thẻ <author> ta có thể biết đượctác giả, tương tự như vậy, ta có thể biết được các thông tin khác của sách
Dữ liệu có cấu trúc và tích hợp
Một điểm mạnh nữa của XML là ta có thể 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âncấp hoàn chỉnh Điều này cực kỳ quan trọng khi bạn cần đến khả năng định nghĩa
dữ liệu có cấu trúc Ngoài ra, việc xây dựng các phương pháp phân tích tài liệuXML dựa trên cấu trúc phân cấp dễ dàng hơn
3 Ứng dụng thực tiễn.
Với sức mạnh của mình, XML đã được sử dụng trong rất nhiều ứng dụng
MathML – Ngôn ngữ định dạng toán học
MathML (Math Markup Language) ra đời nhằm đưa đến khả năng hiển thị
và định dạng được các biểu thức toán học trong các tài liệu Web Dưới đây là ví dụ
về nội dung tài liệu MathML
Trang 7Mở file trên bằng trình duyệt FireFox, ta nhận được kết quả hiển thị như sau:
Trang 8Hình 1 – 1: Tài liệu MathML hiển thị trên trình duyệt.
XHTML
XHTML là ứng dụng XML có thể nói là lớn nhất cho đến hiện nay XHML
mở rộng và định nghĩa lại HTML một cách có trật tự và cấu trúc hơn Nhìn chung,XHTML sử dụng lại các thẻ định dạng của HTML, vì vậy mà mọi trình duyệt đềuhiểu được Dưới đây là một tài liệu XHTML:
Kết quả hiển thị trên trình duyệt:
Trang 9Hình 1 – 2: Tài liệu XHTML hiển thị trên trình duyệt.
SOAP
SOAP là viết tắt của “Simple Object Access Protocol” ( Giao thức truy nhậpđối tượng đơn giản) Theo chuẩn W3C ( World Wide Web Consortium), SOAP làmột giao thức đơn giản để trao đổi thông tin trong môi trường phân cấp, phân phối
Đó là giao thức XML cơ bản, cho phép các thành phần và các ứng dụng liên kết vớinhau sử dụng HTTP SOAP còn có thể kết nối các ứng dụng chạy trên các hệ điềuhành khác nhau, với công nghệ và ngôn ngữ lập trình khác nhau Từ khi SOAP trởthành một giao thức, nó cho phép một phần nào đó của luật gọi đối tượng điềukhiển Thông thường SOAP được sử dụng rộng rãi cùng với giao thức HTTP để kếtnối, nhưng nó vẫn có thể được sử dụng cùng với giao thức khác, ví dụ như SMTP
WML – Wireless Markup Language
WML là ngôn ngữ đánh dấu kế thừa HTML, hỗ trợ xây dựng các trang Webphục vụ cho kết nối từ điện thoại di động Đặc điểm của WML là tạo nên các trangweb nhỏ gọn, hiển thị trên màn hình điện thoại di động
Trang 10III XPath
1 Giới thiệu
Xpath là một ngôn ngữ được sử dụng để tìm kiếm thông tin trên tài liệuXML Ta coi một tài liệu XML như được đại diện bằng một tree (cây) có nhiều nút(nodes) Mỗi phần tử (Element) hay thuộc tính (Attribute) là một nút (node) Đểminh họa, ta sẽ quan sát tài liệu đặt hàng (order) XML sau:
Ta có thể biểu diễn tài liệu trên bằng 1 cây như sau:
Trang 11Hình 2 – 1: Dạng cây của tài liệu XML trong XpathXpath sử dụng location path để đưa ra các nút hay là tập hợp các nút (node-sets) Các biểu thức đường dẫn này giống như là các đường dẫn được sử dụng trong
hệ thống tệp máy tính Bạn có thể dùng biểu thức này để chỉ định đường dẫn đếnnode nào đó hay trích ra (trả về) một hay nhiều nodes thỏa đúng điều kiện yêu cầu.Biểu thức có thể là tuyệt đối, tức là lấy node gốc làm chuẩn hay tương đối, tức làkhởi đầu từ node vừa mới được chọn
XPath đóng một vai trò quan trọng trong công tác trao đổi dữ liệu giữa cácmáy tính hay giữa các chương trình ứng dụng vì nó cho phép ta lựa chọn hay sànglọc ra những tin tức nào mình muốn để trao đổi hay hiển thị
Nếu khi làm việc với cơ sở dữ liệu ta dùng SQL statement Select fromTable WHERE để trích ra một số bản ghi từ một bảng, thì khi làm việc với
Order
Document (Root)Element
OrderNo=”0467”
OrderDate (01-01-2008) Customer (vinhlc) Item
Product (CPU)
ProductID=”1” Price=”200” Quantity (1)
Item
Product (RAM)
ProductID=”2” Price=”48” Quantity (2)
Chú thích:
Element
Attribute
ROOT NODE
Trang 12XML, một bảng dữ liệu nho nhỏ, XPath cho ta những biểu thức về điều kiện giốnggiống như mệnh đề WHERE trong SQL.
XPath là một chuẩn để xử lý XML, cũng giống như SQL là một chuẩn đểlàm việc với cơ sở dữ liệu Tiên phong trong việc triển khai các chương trình ápdụng XPath là công tác của các công ty phần mềm lớn như Microsoft, Oracle, Sun,IBM, v.v Sở dĩ ta cần có một chuẩn XPath là vì nó được áp dụng trong nhiều hoàncảnh, nên cần phải có một lý thuyết rõ ràng, chính xác
2 Mô hình dữ liệu trong Xpath
Khái niệm chung
Mô hình Xpath của một tài liệu XML như là một cây gồm các nút Có nhiềuloại nút khác nhau trong Xpath, như là nút phần tử (element nodes), nút thuộc tính(attribute nodes), và nút dữ liệu văn bản (text nodes)
Các kiểu nút trong Xpath
Có 7 kiểu nút trong Xpath là:
Root nodes – nút gốc
Element nodes – nút phần tử
Attribute nodes – nút thuộc tính
Processing instruction nodes – nút chỉ lệnh
Comment nodes – nút chú thích
Text nodes – nút dữ liệu văn bản
Namespace nodes – nút không gian tên
Để quan sát các nút này, chúng ta xem xét tài liệu planets.xml sau đây:
Trang 13Root Node – nút gốc
Nút gốc là gốc của cây của tài liệu trong Xpath Nó không phải là phần tử
<planets> trong tài liệu planets.xml ở trên Phần tử <planets> là phần tử tài liệu
(document element) trong tài liệu XML Chúng ta thường nhầm lẫn hai khái niệmnày
Nút gốc (root node) là một nút logic mà chứa toàn bộ các nút khác trong cây.Như vậy, phần tử <planets> ở trên là một nút con của nút gốc Chúng ta có thể truycập vào nút gốc bằng cách sử dụng ký tự slash (/) Còn khi sử dụng một biểu thứcnhư là /planets, nghĩa là chúng ta sẽ tìm nút con <planets> từ nút gốc Chúng ta cóthể thử nghiệm điều này bằng cách sử dụng công cụ Xpath Explorer
<density units="(Earth = 1)">.983</density>
<distance units="million miles">43.4</distance>
<density units="(Earth = 1)">.943</density>
<distance units="million miles">66.8</distance>
<density units="(Earth = 1)">1</density>
<distance units="million miles">128.4</distance>
<! At perihelion >
</planet>
</planets>
Trang 14Hình 2 – 2: Truy cập nút <planets>
Element Node – nút phần tử
Đây là loại nút tương ứng với các phần tử (elements) của một tài liệu XML,như là các nút <planets>, <planet> Cũng như các phần tử của tài liệu XML, mỗinút phần tử trong Xpath có thể chứa các nút phần tử khác hay các nút khác: nút chúthích (comment nodes), nút dữ liệu văn bản (text nodes)
AttributeNode – nút thuộc tính
Đây là loại nút tương ứng với các thuộc tính của phần tử trong tài liệu XML
Chẳng hạn, tài liệu planets.xml ở trên có một thuộc tính có tên là units với giá trị là
“days”
Trong Xpath, mỗi phần tử là cha của các nút thuộc tính của nó Điều này làkhác với mô hình đối tượng dữ liệu (DOM – Document Object Model), không coi
<day units="days">58.65</day>
Trang 15Processing Instruction Nodes – nút chỉ lệnh xử lý
Mỗi một chỉ lệnh xử lý trong tài liệu XML là một nút trong Xpath Ví dụ, ta
Text nodes – nút dữ liệu văn bản
Dữ liệu dạng văn bản được lưu trữ trong các phần tử là nút dữ liệu văn bản.Chú ý rằng, nếu một phần tử chứa nhiều phần tử khác hoặc chỉ lệnh, chú thích thì cóthể tách văn bản thành nhiều nút dữ liệu văn bản Ví dụ, ta có phần tử sau:
Phần tử trên chứa 2 nút dữ liệu văn bản: “Mars” và “The Red Planet”
Namespace nodes – nút không gian tên
Namespace nodes có chút khác biết với các loại nút khác Chúng không đượchiện thị trực tiếp trong tài liệu XML:
Trong trường hợp này, tiền tố xsl liên kết với địa chỉ
"http://www.w3.org/1999/XSL/Transform", và phần tử nào có tên bắt đầu bằng tiền
<?xml-stylesheet type="text/xsl" href="planets.xsl"?>
Trang 16mà tên của chúng không chứa tiền tố nào, thì phần tử đó có không gian tên mặcđịnh http://www.w3.org/1999/xhtml.
<map:Stars> có QNames là “Stars”
Expanded name (tên mở rộng): nếu một nút vừa có local name, vừa liên kếtvới một không gian tên, thì expanded name của nó được tạo thành giữa địachỉ của không gian tên và local name Theo James Clark, expanded nameđược tạo bằng cách dùng địa chỉ không gian tên và nối với local name bằngdấu “+” Ví dụ, http://www.starpowder.com+planets[3]
Giá trị của nút
Mỗi một nút trong Xpath đều có giá trị Ví dụ, giá trị của một nút chú thích(comment node) là nội dung của chính nó Sau đây là cách lấy giá trị tương ứng vớimỗi loại nút
Bảng 2.1: Giá trị của nút
Root nodes Bao gồm giá trị của tất cả các nút dữ liệu văn bản
Element nodes Bao gồm giá trị của các text nodes chứa trong nó, kể cả text
nodes có trong con cháu của nó
Attribute nodes Giá trị của thuộc tính
Processing <?xml-stylesheet type="text/xsl" href="file.xsl"?> có thuộc
Trang 173 Location Steps và Paths
Như đã dưới thiệu, Xpath sử dụng location path để đưa ra các nút hay là tậphợp các nút (node-sets) Dạng thể hiện đường dẫn này giống như là các đường dẫnđược sử dụng trong hệ thống tệp máy tính Bạn có thể dùng biểu thức này để chỉđịnh đường dẫn đến node nào đó hay trích ra (trả về) một hay nhiều nodes thỏađúng điều kiện yêu cầu Đường dẫn có thể là tuyệt đối, tức là lấy node gốc làmchuẩn hay tương đối, tức là khởi đầu từ node vừa mới được chọn
Một location path có thể chứa một hoặc nhiều location steps Các locationsteps trong location path được ngăn cách bởi ký tự slash (/) hoặc double slash (//)
Đường dẫn tương đối
Chúng ta hãy tìm vài đường dẫn trong cây của tài liệu XML về đặt hàng nóitrên Muốn chọn cái node Element Order bằng cú pháp đầy đủ, ta sẽ dùng biểu thứcXPath sau đây:
Tương ứng với cú pháp viết tắt là:
Đi ra nhánh của cây, ta sẽ tìm được node Customer bằng cách dùng biểu thứcsau:
Tương ứng với cú pháp viết tắt:
Nếu bạn muốn lấy ra một node thuộc tính, bạn phải nói rõ điều này bằng
cách dùng từ khóa attribute trong cách viết nguyên hay dùng ký tự @ trong cú pháp
tắt Do đó để lấy thuộc tính OrderNo của Element Order, ta sẽ dùng biểu thức sau:
Trang 18Để trích ra tất cả các nodes con cháu, tức là các nodes nhánh xa hơn, ta dùng
từ khóa descendant trong cú pháp đầy đủ hay dấu double slash (//) trong cú pháp tắt.
Thí dụ, để lấy ra các nodes Product trong tài liệu, bạn có thể dùng biểu thức sau:
Cú pháp viết tắt:
Bạn cũng có thể sử dụng các ký tự đại diện (wildcard) để đưa ra các nút Thí
dụ, để đưa ra tất cả các nút con của nút gốc Order, ta dùng biểu thức:
Ngoài ra, bạn cũng có thể sử dụng ký tự đại diện @* để đưa ra tất cả các nútthuộc tính, hay sử dụng node() để đưa ra tất cả các nút con
Đường dẫn tương đối
Trong đường dẫn tuyệt đối, chúng ta luôn bắt đầu từ nút gốc rồi đi xuống cácnút con Với đường dẫn tương đối, chúng ta sẽ chọn một nút làm mốc rồi duyệt cây
để đưa ra thông tin Thí dụ như, nếu nút Item thứ nhất trong Order là nút mốc, thìđường dẫn tương đối để trích ra Element con Quantity là: