mở đầu bằng khai báo chuẩn XML, tiếp theo W3C sử dụng tiếp đầu ngữ xsd: để tham chiếu đến không gian tên của lược đồ, theo cú pháp sau: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 17 <?xml version =”1.0” ?> <xsd:schema xmlns:xsd = “http:// www. </xsd:schema> Tiếp theo là khai báo các phần tử và kiểu dữ liệu: Đối với kiểu phần tử phức hợp sử dụng phần tử khai báo <xsd:complextType>, một phần tử phức hợp thường chứa các khai báo phần tử con, tham chiếu đến các phần tử khác và khai báo các thuộc tính. Phần tử được khai báo bằng chỉ thị <xsd:element>, khai báo thuộc tính bằng chỉ thị <xsd:attribute>. Đối với kiểu phần tử đơn giản được khai báo bằng chỉ thị <xsd:simpleType>.
Sau khi định nghĩa kiểu phần tử, ta hoàn toàn có thể khai báo các phần tử sử dụng kiểu vừa tạo. Ví dụ: Ta có khai báo kiểu phức hợp cho phần tử address <xsd:complexType name = ”address”> <xsd:element name = ”name” type = “xsd:string” /> <xsd:element name = ”street” type = “xsd:string” /> <xsd:element name = ”city” type = “xsd:string” /> <xsd:element name = ”state” type = “xsd:string” /> <xsd:attribute name = ”phone” type = “xsd:string” use =”option”/> </xsd:complexType> Sau đó có thể sử dụng định nghĩa phần tử address cho phần tử <Lender> và <Borrower> để lưu thông tin cá nhân trong tài liệu như sau: <xsd:complexType name =”transactionType”> <xsd:element name=”Lender” type =”address”/> <xsd:element name=”Borrower” type =”address”/> <xsd:element ref=”note” minOccurs =”0”/> <xsd: attribute name =”borrowDate” type=”xsd:date”/> <xsd:complexType> LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 18 Để khai báo kiểu dữ liệu cho các phần tử trong lược đồ ta sử dụng chỉ thị: <xsd:dataType>, trong đó dataType là một trong các kiểu dữ liệu được cho trong bảng sau [1]: Kiểu dữ liệu Ý nghĩa Binary Kiểu dữ liệu nhị phân boolean Kiểu logic byte Kiểu byte century Kiểu thế kỷ (ví dụ 20) date Kiểu ngày decimal Kiểu thập phân double Kiểu số thực 64 – bit ENTITY Kiểu thực thể ENTITIES Kiểu đa thực thể ID Kiểu định danh int, integer Kiểu số nguyên IDREF Kiểu tham chiếu định danh NOTATION Kiểu ghi chú NMTOKEN Kiểu token đơn NMTOKENS Kiểu đa token month Kiểu tháng (ví dụ 4, 6) string Kiểu chuỗi 1. Bảng định kiểu CSS (Cascading Stype Sheet) Bảng định kiểu CSS (Cascading Style Sheet) giống như một tập mẫu (template) quy định các kiểu định dạng cho các phần tử trong XML như các định dạng về font chữ, màu sắc, mầu nền,. LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 19 Bảng định kiểu CSS cũng đã được áp dụng trong tài liệu HTML, tuy nhiên điểm khác biệt chủ yếu giữa việc áp dụng CSS vào HTML với việc áp dụng CSS vào XML là các thẻ trong HTML thì có sẵn thông tin định dạng còn XML thì không có.
Bản chất của CSS là tạo ra một tập mẫu quy định các kiểu định dạng cho các phần tử trong XML (hay các thẻ trong HTML) trong một file tách biệt với tài liệu. Sau đó tập mẫu này được áp dụng vào trong tài liệu XML thông qua chỉ thị xử lý: <?xml-stylesheet type=”text/css” href=”filename.css” ?> Trong đó filename là tên file chứa tập mẫu quy định các định dạng cho các phần tử trong tài liệu, file này có phần mở rộng bắt buộc là .css và có nội dung là các định dạng cho các phần tử trong tài liệu, nội dung định dạng của mỗi phần tử được định nghĩa theo cú pháp: elementName {display:block; attName1: attValue1;…;attNamen:attValuen} Trong đó elementName là tên phần tử cần định dạng, display:block hiển thị thành phần theo cấp khối (bắt đầu ở đầu dòng và thành phần theo sau nó sẽ bắt đầu ở dòng tiếp theo), hoặc display:line hiển thị thành phần theo nội dung. attName là tên thuộc tính, attValue là giá trị của thuộc tính. Nếu muốn gom các thuộc tính định kiểu lại một nhóm (gọi là lớp) thay vì định kiểu cho từng phần tử, ta sử dụng cú pháp sau: .className { attName1: attValue1;…;attNamen:attValuen} Trong đó className là tên lớp và lớp này được sử dụng bên trong phần tử cần định dạng thông qua thuộc tính theo cú pháp <elementName CLASS=”className”> Ví dụ: có tệp tin định dạng format.css sau: TAILIEU{display:block; font-size:24pt; font-weight:bold;color:red} TIEUDE {display: block; font-style:bold; color:blue} .F1{font:12pt/20pt "Arial Black"; color:black; font- style:italic} Và một tài liệu XML có nội dung sau: <?xml version="1.0" standalone="yes"?> LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 20 <?xml-stylesheet type="text/css" href="format.css"?> <TAILIEU> <TIEUDE> Chao mung cac ban den voi XML </TIEUDE> <NOIDUNG class="F1"> Cac ban den voi XML la mot lua chon hoan toan dung dan </NOIDUNG> </TAILIEU> 1.
Mô hình DOM (Document Object Model) Để xử lý một tài liệu XML, W3C định nghĩa tài liệu theo mô hình đối tượng tài liệu DOM (Document Object Model). Theo mô hình này thì một tài liệu XML được tổ chức theo cấu trúc hình cây bao gồm các nút đối tượng, nội dung của mỗi nút (note) trên cây có thể chứa phần tử (element), dữ liệu (text), thuộc tính (attribute),…và các nút con khác. Cụ thể, trong mô hình DOM có các loại nút sau đây [1]: Nút Ý nghĩa Element Phần tử XML Attribute Thuộc tính XML Text Dữ liệu text CDATA section Phân đoạn CDATA Entity reference Tham chiếu thực thể Entity Thực thể Processing Instruction Chỉ thị xử lý Comment Chú thích Document Tài liệu Document Type Kiểu tư liệu Document fragment Đoạn tài liệu Notation Ghi chú LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 21 Mô hình DOM được W3C định nghĩa theo nhiều cấp độ khác nhau. Cụ thể là các cấp độ [10]: Level 0: Là đặc tả DOM không chính thức và được áp dụng cho các trình duyệt trước đây như Netscape navigator 3.
Level 1: Tập trung vào sự kết hợp giữa tài liệu HTML và XML. Level 2: Hỗ trợ không gian tên XML, khung nhìn có lọc (filtered views) và các sự kiện DOM. Level 3: Nâng cao các khả năng của DOM với việc cho phép nạp, xử lý, lưu lại mô hình nội dung tài liệu. Ví dụ: Cho một tài liệu XML <?xml version="1.0" standalone="yes"?> <TAILIEU> <SACHKHTN> <TIEUDE1> Sach khoa hoc tu nhien </TIEUDE1> <NOIDUNG1> Chuc cac ban nghien cuu thanh cong linh vuc khoa hoc tu nhien </NOIDUNG1> </SACHKHTN> <SACHKHXH > <TIEUDE2> Sach khoa hoc xa hoi </TIEUDE2> <NOIDUNG2> Chuc cac ban nghien cuu thanh cong linh vuc khoa hoc xa hoi </NOIDUNG2> </SACHKHXH> </TAILIEU> LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 22 Theo mô hình DOM, tài liêu XML trên được tổ chức theo cấu trúc hình cây như sau: TAILIEU SACHKHT SACHKHX N H TIEUDE1 NOIDUNG1 TIEUDE2 NOIDUNG2 Sach khoa Chuc cac ban Sach khoa Chuc cac ban hoc tu nhien nghien cuu thanh hoc xa hoi nghien cuu thanh cong linh vuc cong linh vuc khoa khoa hoc tu nhien hoc xa hoi Hình 1.2: Cấu trúc cây tài liệu XML 1.
Phân tích tài liệu XML theo mô hình DOM W3C định nghĩa tài liệu XML theo mô hình DOM (Document Object Model). Về cơ bản DOM là một giao diện trình ứng dụng API (Application Program Interface) không phụ thuộc ngôn ngữ và chương trình, cho phép các chương trình và các kịch bản truy cập và cập nhật động nội dung, cấu trúc và kiểu của các tài liệu XML cũng như HTML. Với mô hình DOM, một tài liệu XML có thể được phân tích: tạo, duyệt, thêm, loại bỏ, thay đổi các phần tử thông qua các ngôn ngữ như: Java, JavaScript, Visual Studio. Song dù sử dụng ngôn ngữ nào để phân tích thì ta cũng phải sử dụng tới các phương thức mà DOM cung cấp được liệt kê trong bảng sau [11]: LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 23 Phương thức Ý nghĩa documentElement Lấy về nút gốc của tài liệu DOM parentNode Lấy nút cha của nút hiện tại firstChild Lấy nút con đầu tiên previousChild Lấy nút con trước đó nextChild Lấy nút con kế tiếp lastChild Lấy nút con cuối cùng firstSibling Lấy nút cùng cấp đầu tiên nextSibling Lấy nút cùng cấp kế tiếp previousSibling Lấy nút cùng cấp trước đó lastSibling Lấy nút cùng cấp cuối cùng getElementsByTagName Lấy về danh sách các nút Item(i) Truy cập nút thứ i trong danh sách (i=0,1,.) childNodes Trả về danh sách các nút trong tài liệu docType Trả về kiểu của nút gốc length Trả về các nút trong danh sách các nút nodeName Trả về tên của một nút noteValue Trả về giá trị của một nút noteType Xác định kiểu dữ liệu của một nút createElement() Khởi tạo một thành phần mới trong tài liệu createTextNode() Khởi tạo dữ liệu text cho một nút Ví dụ: Phân tích tài liệu XML dựa vào mô hình DOM sử dụng Javascript <HTML> <HEAD> <TITLE> Doc gia tri cac phan tu XML </TITLE> <XML ID="viduXML" SRC="vidu.xml"></XML> LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 24 <SCRIPT LANGUAGE="JavaScript"> function readXMLDocument() {var xmldoc,tailieuNode,tieudeNode, noidungNode, first_nameNode,last_nameNode var outputText tailieuNode=xmldoc.documentElement tieudeNode=tailieuNode.firstChild noidungNode=tailieuNode.lastChild first_nameNode=tailieuNode.nodeValue last_nameNode=noidungNode.nodeValue outputText="second name:" +last_nameNode messageDIV.innerHTML=outputText } </SCRIPT> </HEAD> <BODY> <CENTER> <H1> Read Value XML with elements </H1> <INPUT TYPE="BUTTON" VALUE="Get elements XML" ONCLICK="readXMLDocument()"> <P> <DIV ID="messageDIV"></DIV> </CENTER> </BODY> </HTML> Trong đó nội dung tài liệu XML là tệp vidu.xml như sau: <?xml version="1.0" standalone="yes"?> <?xml-stylesheet type="text/css" href="dinhdang.css"?> <TAILIEU> <TIEUDE> Sach khoa hoc </TIEUDE> <NOIDUNG> Khoa hoc cong nghe </NOIDUNG> </TAILIEU> LUAN VAN CHAT LUONG download : add luanvanchat@agmail.
XPATH Như chúng ta biết, hệ điều hành tổ chức các thư mục và các file trên ổ đĩa cứng theo cấu trúc cây. Khi muốn truy xuất đến một thư mục hay một file nào đó ta thường sử dụng đường dẫn thư mục (theo dạng đường dẫn tuyệt đối hoặc đường dẫn tương đối). Trong một tài liệu XML (được tổ chức theo cấu trúc dạng cây), ta cũng có thể sử dụng khái niệm đường dẫn tương tự như trong hệ điều hành thông qua khái niệm XPATH. XPATH cung cấp một cơ chế tham chiếu đến một thư mục dữ liệu trong tài liệu XML thông qua đường dẫn, hay nó cung cấp một cơ chế tham chiếu đến các nút trong một tài liệu XML theo các dạng sau [1] XPATH Ý nghĩa Ví dụ Dấu chấm “.” Tham chiếu đến nút hiện hành <xsl:value-of select=”.”/> /rootName Là dạng đường dẫn tuyệt đối /AAA cho kết quả là (bắt đầu từ root), kết quả chọn là phần tử được chọn phần tử rootName AAA /rootName[/elementName]n/eN Chọn tất cả các phần tử eName /AAA/BBB/CCC ame cho kết quả là chọn tất cả các phần tử CCC là con của /AAA/BBB //elementName Dạng đường dẫn tương đối (tổng //BBB thể), cho kết quả là chọn tất cả Cho kết quả là chọn các phần tử elementName trong tất cả các phần tử tài liệu BBB //elementName/eName Chọn tất cả các phần tử eName //BBB/CCC trong tài liệu là con của Cho kết quả là chọn elementName tất cả các phần tử CCC là con của LUAN VAN CHAT LUONG download : add luanvanchat@agmail.