CH
NG VIII:
ƯƠ XML
Lý thuyết 3 tiết Thực hành 6 tiết
Ơ Ả
Ề
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 Language.
ữ ế ắ t t t cho ch eXtensible Markup
XML là ngôn ng đánh d u t
ấ ươ ữ
ượ ố ng đ i là ữ c phát tri n t
ể ừ ộ ớ m i, đ m t ngôn ng đánh ấ d u Standard Generalized Markup Language (SGML).
ủ
ệ
ấ
C u trúc c a tài li u XML
ầ ử
ớ ẻ ế ộ
ộ ề ồ ỗ G m nhi u ph n t (element), m i thành ẻ ắ ầ ộ ầ ượ ắ ầ c b t đ u v i m t th b t đ u ph n đ (starttag) và m t th k t thúc (endtag). ủ Gi a starttag và endtag là n i dung c a
này .
N i dung có th bao g m d li u văn b n
ữ ầ ử ph n t ộ ả
ể ộ ể ồ ầ ử hay có th là m t ph n t ữ ệ khác.
ủ
ệ
ấ
C u trúc c a tài li u XML (Vd)
ủ
ệ
ấ
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 . ự
ệ
ầ
ủ
ả ủ
ộ ố
ậ c g i là
wellformed.
M t tài li u XML wellformed ch a ch c là m t tài
ư ợ ệ ế
ộ ả
ỉ ượ
, nó ch đ
c xem là h p l ệ
ắ
ồ
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ì đ ộ ắ ệ ợ ệ ệ li u 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 wellformed
Ph 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à Comments
ị ề ỉ ế Processing Instructions (ch th v cách ch
ằ bi n) n m trong c p tag Và ?> .
ế ặ ộ ặ ệ M c dù m t tài li u XML wellformed
ẽ ể ở ầ hàng đ u tài
ầ không c n có m t Processing Instruction, ư nh ng thông th ượ ọ ệ li u, đ ộ ườ c g i là ng ta s đ prologue
Processing Instructions và Comments
standalone="yes"?>
Processing Instructions và Comments
ộ ạ
Có m t lo i Processing Instruction khác cũng t tên stylesheet c a
ủ ế
ể ằ ặ ụ khá thông d ng là cho bi XML này Có th thêm Comment b ng cách dùng c p
Tags .
Namespace
ế ệ ể ộ
ộ Cho 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
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 ể xmlns đ khai báo
ằ ộ ộ b ng cách dùng Attribute m t default namespace .
Namespace
Ự
Ệ
XÂY D NG TÀI LI U XML
Document Type Define (DTD) XML schema
Document Type Define (DTD)
ắ
DTD là m t b nh ng qui t c cú pháp cho ạ ế t nh ng nhãn nào b n
ữ
ộ
ứ ự ữ
ể ử ụ ượ ế c x p theo th t ể ệ ấ
ộ ộ ộ ề
ữ ộ ệ ộ ệ
ư ặ ệ ộ ộ ữ ạ nhãn. Nó cho b n bi ệ có th s d ng trong m t tài li u, chúng nên 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 ộ ườ ng nó là m t tài li u ệ ạ t ho c m t lo i các tài li u. li u XML, nh ng th ộ riêng bi
Document Type Define (DTD)
]>
Document Type Define (DTD)
Document Type Define (DTD)
Và file “note.dtd”
XML schema
XML Schema mô t
ệ ủ c u trúc c a tài li u
XML Schema mô t
ế ả ấ XML, thay th cho DTD
ệ
con
ng các ph n t ầ ử
Các ph n t ầ ử và thu c tính trong tài li u XML Th t ứ ự ầ ử ố ượ và s l Các ki u d li u c a ph n t ể ữ ệ ủ
ộ và thu c tính
:ả ộ
ử ụ
Lý do s d ng XML Schema
ỗ ợ ử ụ ả
ự
ạ
ộ
ơ
ợ
ế
ộ ự XML Schema là m t s thay th cho DTD H tr nhi u lo i d li u ạ ữ ệ ề S d ng cú pháp XML B o toàn s giao ti p d li u ế ữ ệ Ràng bu c khóa và tham chi u m nh h n DTD ế Tích h p v i namespace ớ
XML Schema (Ví dụ
targetNamespace=“http://www.w3schools.com”
xmlns=“http://www.w3schools.com”
elementFormDefault="qualified">
Schema và Namespace
targetNamespace=“http://xyz.edu/Admin”>
…..
http://www.w3.org/2001/XMLSchema:
targetNamespace=“http://xyz.edu/Admin”>
…..
ừ ự khóa dùng trong s
ụ ủ ượ ồ c đ XML, ví d : schema,
ủ
namespace c a các t ị xác đ nh l targetNamespace,… ị targetNamespace: đ nh nghĩa namespace c a ị ệ c xác đ nh trong tài li u
ượ ồ ượ
l
c đ đ
ế
ộ
ế Tham chi u đ n m t XML Schema
xmlns:xsi=http://www.w3.org/2001/XMLSchemainstance
xsi:schemaLocation="http://www.w3schools.com note.xsd"> ượ ồ ủ
c đ c a namespace ượ
ấ ở
c tìm th y
http://www.w3schools.com đ http://www.w3schools.com note.xsd
Ớ
Ậ
L P TRÌNH V I XML
1. Xpath 2. Document Object Model (DOM)
Xpath
ọ
ữ
Xpath đó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
ổ ữ ệ ươ
Là các bi u th c dùng đ truy xu t đ n m t
ấ ế ộ ụ ể
ữ ứ ng trình ng d ng ể ề ứ ẻ ệ 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 XML
ả
ơ
Xpath (cú pháp đ n gi n)
ườ
ệ ố ắ ầ ừ
ố ủ
ệ
ế
node g c c a tài li u đ n
/: Đ ng d n tuy t đ i b t đ u t ẫ 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)ố
ở ộ
ấ
đ sâu b t kì
//CCC: nút CCC
ở ộ
ấ
đ sâu b t kì
//: Nút
ả
ơ
Xpath (cú pháp đ n gi n)
ự ế ủ
ấ ả
/AAA/*: T t c các nút con tr c ti p c a AAA
ở ấ
ứ
c p th 2
ấ ả /*/BBB: T t c các nút B
Ấ
//*: T T C CÁC NODE Ả
ả
Xpath (cú pháp đ n gi n)
ấ ế
ứ ự
ặ
ỉ ụ
nào đó ho c theo ch m c.
ơ [ ]: Truy xu t đ n các node theo th t
ọ ự
ể ỉ
ứ
ể
ể
ề
ệ
ị
Ngoài ra, có th dùng đ ch đ nh bi u th c đi u ki n ch n l a node
ứ
ủ
/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
content
ớ ộ
/AAA/BBB[CCC=“content”]: Nút BBB th 3 ứ (có nút con CCC v i n i dung là
content )
ả
ơ
Xpath (cú pháp đ n gi n)
ộ
@: Truy xu t đ n thu c tính ấ ế
ữ
ộ
Nh ng node BBB có thu c tính
id
ữ
ộ
ị
Nh ng node CCC có giá tr thu c tính name = ccc
ữ
Nh ng node CCC
ộ có thu c tính
ữ
ộ
KHÔNG có thu c tính
/AAA/CCC[not(@*)]: Nh ng node CCC
ể ọ
ệ ớ
ố
Xpath XPATH: Axis – dùng đ ch n các node trong m i quan h v i ờ ệ node hi n th i
ọ ấ ả
ệ
ờ ủ t c node con c a node hi n th i
child:: : Ch n t
/AAA/child::ECC
/AAA/ECC
//BBB/child::*
/AAA/BBB/DDD
Xpath
ấ ả
ẻ
descendant:: : T t c các th “con cháu”
/AAA/child::*
/AAA/descendant::*
descendantorself:: = descendant:: + context node
Xpath
parent:: : Th chaẻ
//BBB/parent::* ủ
ẻ
Th cha c a BBB
//EEE/parent::ECC
ủ
ẻ
Th cha c a ECC
Xpath
ấ ả
ấ ả
ẻ em” ẻ anh”
followingsibling:: : T t c các th “ precedingsibling:: : T t c các th “
//EEE/followingsibling::*
//EEE/precedingsibling::*
Xpath
ấ ả
ấ
ẻ ở
ệ
ẻ
ẻ có th m xu t hi n sau th đóng
c a ủ th ẻ
ệ
ấ ả
ẻ
ệ
ấ
ướ
ẻ ở ủ c th m c a thh
following:: : T t c các th hi n hành ẻ preceding::: T t c các th có th đóng xu t hi n tr
//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 xml
Không overlap nhau
ạ ẽ
ế i s cho k t qu là
ủ
“Or” ( | ) l ấ ả t
ả ệ t c các node c a tài li u
Document 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
ượ ấ ấ ể c dùng đ truy xu t
ệ ạ d li u (Tree View), đ các tài li u d ng HTML và XML.
Document Object Model (DOM)
DOM có nhi u c p đ :
ộ
ọ
ế
ủ ừ
i
t DOM theo qui ệ ồ ạ t t n t ụ
ờ
ộ c khi DOM c p đ 1 ra đ i. Ví d :
C p 0 : ấ Bao g m m i chi ti ể ị đ nh c a t ng nhà phát tri n riêng bi ấ ướ tr document.images, document.forms, document.layers, và document.all
ệ
ệ
ấ
Cách duy t qua tài li u (c u trúc cây)
ộ
ệ
ồ
ầ
C p 1 : ấ ủ 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 DOM
ủ
ả
ả
ế
ự ệ ả chi ti
Nh m nâng cao các kh năng c a DOM, ậ t kĩ thu t khác
C p 3 : ằ ấ ứ ộ ấ c p đ 3 ch a 6 b n mô t 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)
E1625A
Widget
XSLT XmlDocument và XPathDocument XmlReader và XmlWriter
XSLT
XSL (Extension Style Language) đ chuy n
ể
ữ ệ ủ ể d li u c a XML ra d ng HTML .
ữ ệ
ự
ệ
ề
ể ư
ạ
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 .
ạ ạ XSL chia làm hai d ng :
ổ ữ ệ
ơ ồ
ể S đ chuy n đ i d li u
ấ
ổ
C u trúc t ng quát file XSL
ệ
ệ
Nhúng tài li u XSLT vào tài li u XML
file .xsl”?>
ệ ấ
ộ ố
ầ ử
M t s ph n t
XSLT
Template Applytemplates Valueof Sort Copyof Copy …
XmlDocument và XPathDocument
XmlDocument là đ i t
ố ượ ệ ng tài li u .
XML Document
ủ ớ
ủ ệ ậ ộ
ộ Các thu c tính c a l p XmlDocument Attributes : 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 DocumentType FirstChild, lastChild, nextSibling, nodeName,
ầ ử ố ấ g c .
nodeType, nodeValue .
ệ
Phân tích tài li u XML
ự ộ ạ ừ ậ ạ đ ng t o cây t p tin và t
L u tr ph n t
XmlNode rootNode = doc.DocumentElement;
ệ Tài li u n p t DOM : XmlDocument doc = new XmlDocument(); doc.Load(xmlPath); ữ ầ ử ố ư g c :
ệ
ệ
Duy t tài li u XML
XPathDocument
XPathDocument 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à XmlWriter
XmlReader
M t s thu c tính c a XmlReader :
ị
ệ
ủ
AttributeCount . EOF . Depth : Xác đ nh đ sâu c a node hi n hành ộ HasAttribute HasValue IsEmptyElement Name Value ValueType
ộ ố ủ ộ
ử ụ
S d ng XmlReader
ệ
ở
Không gian tên : Using System.Xml M 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);
}
XmlWriter
Các thu c tính :
ố ượ
ng XmlWriterSettings
ộ Settings : t o đ i t ạ WriteState XmlLang XmlSpace
ử ụ
S d ng XmlWriter
WriteStartDocument() ỉ
ị
Ghi ch th : ế K t thúc :
WriteEndDocument()
ầ ử
ộ Đóng các thu c tính và ph n t
ắ ầ B t đ u :
Ghi ph n tầ ử
ộ Ghi thu c tính
ả Writer.WriteStartElement(“employee”); Writer.WriteStartAttribute(“id”); Writer.WriteString(“1”); Writer.WriteEndAttribute(); Writer.WriteEndElement(); ế K t qu :
ợ ổ Bài t ng h p
ơ ở ữ ệ
IV. C s d li u và XML
XML là đ nh d ng chung cho vi c thay đ i
ổ ạ ệ
ữ ệ
ư
ộ ị ạ
ị d li u trên Internet ấ ữ ệ Datasets xu t d li u nh XML ậ ợ ấ XML 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à Datasets
ứ ủ ố ượ
ươ
ng th c c a đ i t
ng
ể ạ ữ ệ ừ
Các ph DataSet ử ụ S d ng ReadXml đ n p d li u t
ặ file ho c dòng
DataSet ds = new DataSet(); Ds.ReadXml(Server.MapPath(“filename.xml”));
ữ ệ
ử ụ
ể
S d ng WriteXml đ ghi d li u XML vào file, stream
ế
ử ụ
ể
DataSet 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 i
ữ ệ String strXmlDS = ds.GetXml();

