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 đ (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

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)

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 . ự

ả ủ

ộ ố

ậ c g i là

well­formed.

 M t tài li u XML well­formed 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 well­formed

 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  .

ế ặ ộ ặ ệ  M c dù m t tài li u XML well­formed

ẽ ể ở ầ  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"?>  

2002­6­14

Helen Mooney    1  2

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

 

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  ể xmlns đ  khai báo

ằ ộ ộ b ng cách dùng Attribute  m t default namespace .

Namespace

 

2001­01­01 

Mr.  Graeme  Malcolm

 

Treasure Island  Robert Louis Stevenson

 

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)

]> Tove Jani Reminder Don't forget me this weekend

Document Type Define (DTD)

Tove Jani Reminder Don't forget me this weekend!

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:

ừ ự  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 đ  đ  trên

ế

ế Tham chi u đ n m t XML  Schema

xmlns:xsi=http://www.w3.org/2001/XMLSchema­instance xsi:schemaLocation="http://www.w3schools.com note.xsd">

ượ ồ ủ

Tove Jani Reminder Don't forget me this weekend!  xsi:schemaLocation nghĩa là l

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::*

descendant­or­self:: = 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”

following­sibling:: : T t c  các th  “ preceding­sibling:: : T t c  các th  “

//EEE/following­sibling::*

//EEE/preceding­sibling::*

      

            

            

            

            

      

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)

2000/1/1 Company A 

E16­25A

Production­Class

Widget

16

 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  Apply­templates  Value­of  Sort  Copy­of  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ầ ử

Minh  Writer.WriteStartElement(“name”);  Writer.WriteElementString(“firstName”,”Minh”)  Writer.WriteEndElement()

ộ 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();