CƠ BẢN VỀ XML
Giới thiệu XML
Cấu trúc của tài liệu XML
Giới thiệu XML
XML là viết tắt cho chữ eXtensible Markup Language.
XML là ngôn ngữ đánh dấu tương đối là mới, được phát triển từ một ngôn ngữ đánh dấu Standard Generalized Markup Language (SGML).
65 trang |
Chia sẻ: phuongt97 | Lượt xem: 386 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Phát triển Web nâng cao - Chương VIII: XML, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG VIII:XMLLý thuyết 3 tiếtThực hành 6 tiếtCƠ BẢN VỀ XMLGiới thiệu XMLCấu trúc của tài liệu XMLGiới thiệu XMLXML là viết tắt cho chữ eXtensible Markup Language.XML là ngôn ngữ đánh dấu tương đối là mới, được phát triển từ một ngôn ngữ đánh dấu Standard Generalized Markup Language (SGML).Cấu trúc của tài liệu XMLGồm nhiều phần tử (element), mỗi thành phần được bắt đầu với một thẻ bắt đầu (start-tag) và một thẻ kết thúc (end-tag).Giữa start-tag và end-tag là nội dung của phần tử này .Nội dung có thể bao gồm dữ liệu văn bản hay có thể là một phần tử khác.Cấu trúc của tài liệu XML (Vd) F10 Shimano 47.76 Cấu trúc của tài liệu XML (tt)Một tài liệu XML không có tồn tại một thẻ nào không đúng quy định .Khi xây dựng tài liệu XML cần phải tuân thủ theo một số quy luật nào đó, nếu tuân thủ đúng quy luật thì được gọi là well-formed.Một tài liệu XML well-formed chưa chắc là một tài liệu hợp lệ, nó chỉ được xem là hợp lệ nếu đảm bảo những quy tắc trong tài liệu Document Type Definition (DTD) hay giản đồ (schema)Một tài liệu XML well-formedPhải có một root Element duy nhất, gọi là Document Element.Mỗi tag mở phải có một tag đóng tương ứng.Tags trong XML thì case sensitive.Mỗi child Element phải nằm trong Element cha .Giá trị thuộc tính trong XML phải được bao trong một cặp ngoặc kép hay một cặp ngoặc kép .Processing Instructions và CommentsProcessing Instructions (chỉ thị về cách chế biến) nằm trong cặp tag .Mặc dù một tài liệu XML well-formed không cần có một Processing Instruction, nhưng thông thường ta sẽ để ở hàng đầu tài liệu, được gọi là prologue Processing Instructions và Comments 2002-6-14 Helen Mooney 1 2 Processing Instructions và CommentsCó một loại Processing Instruction khác cũng khá thông dụng là cho biết tên stylesheet của XML này Có thể thêm Comment bằng cách dùng cặp Tags .NamespaceCho ta cách dùng một Elemet để nói đến hai dữ liệu khác nhau trong cùng một tài liệu XML. Namespace 2001-01-01 Mr. Graeme Malcolm Treasure Island Robert Louis Stevenson NamespaceĐể tránh sự nhầm lẫn, bạn có thể sử dụng Namespace để nói rõ tên Element ấy thuộc về URI (Univeral Resource Identifier) nào .Một URI có thể là một URL hay một chỗ nào định nghĩa nó.Khai báo một Namespace trong một Element bằng cách dùng Attribute xmlns để khai báo một default namespace .Namespace 2001-01-01 Mr. Graeme Malcolm Treasure Island Robert Louis Stevenson XÂY DỰNG TÀI LIỆU XMLDocument Type Define (DTD)XML schemaDocument Type Define (DTD)DTD là một bộ những qui tắc cú pháp cho nhãn. Nó cho bạn biết những nhãn nào bạn có thể sử dụng trong một tài liệu, chúng nên được xếp theo thứ tự nào, những nhãn nào có thể xuất hiện bên trong các nhãn khác, những nhãn nào có các thuộc tính,...Một DTD có thề là một bộ phận của một tài liệu XML, nhưng thường nó là một tài liệu riêng biệt hoặc một loại các tài liệu.Document Type Define (DTD)]>ToveJaniReminderDon't forget me this weekendDocument Type Define (DTD)ToveJaniReminderDon't forget me this weekend!Document Type Define (DTD)Và file “note.dtd”XML schemaXML Schema mô tả cấu trúc của tài liệu XML, thay thế cho DTDXML Schema mô tả:Các phần tử và thuộc tính trong tài liệu XMLThứ tự và số lượng các phần tử conCác kiểu dữ liệu của phần tử và thuộc tínhLý do sử dụng XML SchemaXML Schema là một sự thay thế cho DTDHỗ trợ nhiều loại dữ liệuSử dụng cú pháp XMLBảo toàn sự giao tiếp dữ liệuRàng buộc khóa và tham chiếu mạnh hơn DTDTích hợp với namespaceXML Schema (Ví dụ Schema và Namespace.. namespace của các từ khóa dùng trong sự xác định lược đồ XML, ví dụ: schema, targetNamespace,targetNamespace: định nghĩa namespace của lược đồ được xác định trong tài liệu trênTham chiếu đến một XML SchemaToveJaniReminderDon't forget me this weekend! xsi:schemaLocation nghĩa là lược đồ của namespace được tìm thấy ở note.xsdLẬP TRÌNH VỚI XML1. Xpath2. Document Object Model (DOM)XpathXpath đóng vai trò quan trọng trong công tác trao đổi dữ liệu giữa các máy tính hay giữa các chương trình ứng dụng Là các biểu thức dùng để truy xuất đến một hoặc nhiều thẻ trong tài liệu XML.Được sử dụng trong XSLT để chuyển đổi cấu trúc nội dung tài liệu XMLXpath (cú pháp đơn giản)/: Đường dẫn tuyệt đối bắt đầu từ node gốc của tài liệu đến 1 node cụ thể - /AAA: nút gốc- /AAA/BBB: nút B là con của A- /AAA/DDD/CCC: C – con D – con A (gốc)//: Nút ở độ sâu bất kì//CCC: nút CCC ở độ sâu bất kìXpath (cú pháp đơn giản) - /AAA/*: Tất cả các nút con trực tiếp của AAA- /*/BBB: Tất cả các nút B ở cấp thứ 2//*: TẤT CẢ CÁC NODEXpath (cú pháp đơn giản) content - /AAA/BBB[1]: Nút BBB thứ 1 (con của AAA)- /AAA/BBB[2]: Nút BBB thứ 2 (con của AAA)- /AAA/BBB[last()]: Nút BBB cuối cùng- /AAA/BBB[CCC=“content”]: Nút BBB thứ 3 (có nút con CCC với nội dung là content )[ ]: Truy xuất đến các node theo thứ tự nào đó hoặc theo chỉ mục. Ngoài ra, có thể dùng để chỉ định biểu thức điều kiện chọn lựa nodeXpath (cú pháp đơn giản) @: Truy xuất đến thuộc tínhNhững node BBB có thuộc tính idNhững node CCC có giá trị thuộc tính name = cccNhững node CCC có thuộc tính- /AAA/CCC[not(@*)]:Những node CCC KHÔNG có thuộc tínhXpathchild:: : Chọn tất cả node con của node hiện thờiXPATH: Axis – dùng để chọn các node trong mối quan hệ với node hiện thời - /AAA/child::ECC/AAA/ECC- //BBB/child::*/AAA/BBB/DDDXpath descendant:: : Tất cả các thẻ “con cháu” /AAA/child::*/AAA/descendant::*descendant-or-self:: = descendant:: + context nodeXpathparent:: : Thẻ cha - //BBB/parent::*Thẻ cha của BBB- //EEE/parent::ECCThẻ cha của ECCXpathfollowing-sibling:: : Tất cả các thẻ “em”preceding-sibling:: : Tất cả các thẻ “anh” //EEE/following-sibling::* //EEE/preceding-sibling::*Xpathfollowing:: : Tất cả các thẻ có thẻ mở xuất hiện sau thẻ đóng của thẻ hiện hànhpreceding::: Tất cả các thẻ có thẻ đóng xuất hiện trước thẻ mở của thh//BBB/following::* //EEE/preceding::* Xpath - //EEE/ancestor::*- //EEE/descendant::*- //EEE/following::*- //EEE/preceding::*- //EEE/self::*5 axis trên tạo thành 5 phân hoạch của tài liệu xmlKhông overlap nhau“Or” ( | ) lại sẽ cho kết quả là tất cả các node của tài liệuDocument Object Model (DOM)DOM là một giao diện ứng dụng (API). DOM thường có dạng là một cây cấu trúc dữ liệu (Tree View), được dùng để truy xuất các tài liệu dạng HTML và XML.Document Object Model (DOM)DOM có nhiều cấp độ :Cấp 0 : Bao gồm mọi chi tiết DOM theo qui định của từng nhà phát triển riêng biệt tồn tại trước khi DOM cấp độ 1 ra đời. Ví dụ: document.images, document.forms, document.layers, và document.all Cấp 1 : Cách duyệt qua tài liệu (cấu trúc cây) của DOM (HTML và XML) và thao tác nội dung (bao gồm việc thêm thành phần). Các thành phần riêng cho HTML cũng được đưa vào.Document Object Model (DOM)Cấp 2 : Hỗ trợ không gian tên XML, khung nhìn có lọc (filtered views) và các sự kiện DOMCấp 3 : Nhằm nâng cao các khả năng của DOM, cấp độ 3 chứa 6 bản mô tả chi tiết kĩ thuật khác nhau: 1) the DOM Level 3 Core; 2) the DOM Level 3 Load and Save; 3) the DOM Level 3 XPath; 4) the DOM Level 3 Views and Formatting; 5) DOM Level 3 Requirements; and 6) the DOM Level 3 Validation.DOM (vd) 2000/1/1 Company A E16-25A Production-Class Widget 16 XSLTXmlDocument và XPathDocumentXmlReader và XmlWriterXSLTXSL (Extension Style Language) để chuyển dữ liệu của XML ra dạng HTML .XSL chia làm hai dạng :XSLT (XSL Transformation) : ngôn ngữ XSL chuyên về chuyển dịch – thực hiện việc rút trích dữ liệu XML đưa vào khuôn dạnh HTML .XSLFO (XSL Formating Object) : ngôn ngữ XSL chuyên về định dạng – cung cấp các thuộc tính định dạng tài liệu cho phong phú và đa dạng hơn như font, chữ, màu sắc, hình ảnh .Sơ đồ chuyển đổi dữ liệuCấu trúc tổng quát file XSLNhúng tài liệu XSLT vào tài liệu XMLMột số phần tử XSLTTemplateApply-templatesValue-ofSortCopy-ofCopyXmlDocument và XPathDocumentXmlDocument là đối tượng tài liệu .XML DocumentCác thuộc tính của lớp XmlDocumentAttributes : Tập các thuộc tính của node hiện hành .Childnodes : Trả về các con của node hiện hành .DocumentElement : lấy phần tử gốc .DocumentType FirstChild, lastChild, nextSibling, nodeName, nodeType, nodeValue .Phân tích tài liệu XMLTài liệu nạp từ tập tin và tự động tạo cây DOM :XmlDocument doc = new XmlDocument();doc.Load(xmlPath);Lưu trữ phần tử gốc :XmlNode rootNode = doc.DocumentElement;Duyệt tài liệu XMLXPathDocumentXPathDocument tương thích cho bất kỳ thao tác nào của lớp XmlDocument.Khi cần thao tác nhanh chúng ta có thể sử dụng XPathDocument .Ví dụ :XmlReader và XmlWriterXmlReaderMột số thuộc tính của XmlReader :AttributeCount .EOF .Depth : Xác định độ sâu của node hiện hànhHasAttributeHasValueIsEmptyElementNameValueValueTypeSử dụng XmlReaderKhông gian tên : Using System.XmlMở tài liệu XML : xmlFile = @Server.MapPath(“”) + “\\file_xml” ;Tạo đối tượng sử dụng phương thức Create() XmlReader reader = XmlReader.Create(xmlFile);Đọc tài liệu while(reader.Read()) { Response.Write(reader.Name); }XmlWriterCác thuộc tính :Settings : tạo đối tượng XmlWriterSettingsWriteState XmlLangXmlSpaceSử dụng XmlWriterBắt đầu :WriteStartDocument()Ghi chỉ thị : Kết thúc :WriteEndDocument()Đóng các thuộc tính và phần tửGhi phần tửMinhWriter.WriteStartElement(“name”);Writer.WriteElementString(“firstName”,”Minh”)Writer.WriteEndElement()Ghi thuộc tínhWriter.WriteStartElement(“employee”);Writer.WriteStartAttribute(“id”);Writer.WriteString(“1”);Writer.WriteEndAttribute();Writer.WriteEndElement();Kết quả :Bài tổng hợpIV. Cơ sở dữ liệu và XMLXML là định dạng chung cho việc thay đổi dữ liệu trên InternetDatasets xuất dữ liệu như XMLXML cung cấp một định dạng thuận lợi cho việc chuyển nội dung một dataset đến client và ngược lại .IV. Cơ sở dữ liệu và XML (tt)Các đối tượng XML đồng bộTổng quan XML và DatasetsCác phương thức của đối tượng DataSetSử dụng ReadXml để nạp dữ liệu từ file hoặc dòngDataSet ds = new DataSet();Ds.ReadXml(Server.MapPath(“filename.xml”));Sử dụng WriteXml để ghi dữ liệu XML vào file, streamDataSet ds = new DataSet();SqlDataAdapter da = new SqlDataAdapter(strSql,conn);da.Fill(ds);ds.WriteXml(Server.MapPath(“filename.xml”));Sử dụng GetXml để ghi dữ liệu vào biến chuỗiString strXmlDS = ds.GetXml();
Các file đính kèm theo tài liệu này:
- bai_giang_phat_trien_web_nang_cao_chuong_viii_xml.ppt