Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web

 Tổng quan về XML.

XML có tầm ảnh hưởng rất lớn đến công nghệ truyền tin hiện tại, nhất là môi trường

Web. Trong số chúng ta, chắc chắn đã từng nghe qua Web Services. Đó là những dịch vụ

trên Web ta có thể dùng on-demand , tức là khi nào cần cho chương trình của mình, bằng

cách gọi nó theo phương pháp giống như gọi một hàm. Web Services được triển khai dựa

vào XML và Http, chuẩn dùng để gởi các trang Web.

Điểm quan trọng của kỹ thuật XML là nó không thuộc riêng về một công ty nào, nhưng

là một tiêu chuẩn được mọi người công nhận vì được soạn ra bởi World Wide Web

Consortium - W3C và những ai muốn đóng góp bằng cách trao đổi qua email và forum. Bản

thân của XML tuy không có gì khó hiểu, nhưng các công cụ chuẩn được định ra để làm việc

với XML như Document Object Model - DOM, XPath, XSL, v.v. thì rất hữu hiệu, và chính

các chuẩn nầy được phát triển không ngừng.

Microsoft đã cố gắng hỗ trợ XML ngay từ đầu. Chẳng những có đại diện để làm việc

thường trực trong W3C mà còn tích cực đóng góp bằng cách gởi những đề nghị. Vị trí của

Microsoft về XML là khi tiêu chuẩn chưa được hoàn thành thì các sản phẩm của Microsoft

tuân thủ những gì có vẽ được đa số công nhận và khi tiêu chuẩn hoàn thành thì tuân thủ

hoàn toàn.

Công cụ XML sáng giá nhất của Microsoft là ActiveX MSXML. Nó được dùng trong

Visual Basic 6, ASP (Active Server Pages) của IIS và Internet Explorer từ version 5.5. Hiện

nay MSXML đã có version 4.0. MSXML parse (đọc và phân tích) và validate (kiểm tra sự

hợp lệ) XML file để cho ta DOM, một cây của các Các nút đại diện các thành phần bên trong

XML. MSXML cũng giúp ta dựa vào một XSL file để chuyển đổi một XML file thành một trang

Web (HTML) hay một XML khác.

XML là viết tắt cho chữ eXtensible Markup Language - nhưng Markup Language (ngôn

ngữ đánh dấu) là gì? Trong ngành ấn loát, để chỉ thị cho thợ sắp chữ về cách in một bài vỡ,

tác giả hay chủ bút thường vẽ các vòng tròn trong bản thão và chú thích bằng một ngôn ngữ

đánh dấu tương tự như tốc ký. Ngôn ngữ ấy được gọi là Markup Language.

XML là một ngôn ngữ đánh dấu tương đối mới vì nó là một một tập hợp con của và dẫn

xuất từ một ngôn ngữ đánh dấu tên là Standard Generalized Markup Language (SGML).

Ngôn ngữ HTML cũng dựa vào SGML, nói đúng ra nó là một áp dụng của SGML.

SGML được phát minh bởi Ed Mosher, Ray Lorie và Charles F. Goldfarb của nhóm IBM

research vào năm 1969, khi con người đặt chân lên mặt trăng. Lúc đầu nó có tên là

Generalized Markup Language (GML), và được thiết kế để dùng làm meta-language, một

ngôn ngữ được dùng để diễn tả các ngôn ngữ khác - văn phạm, ngữ vựng của chúng ,.v.v.

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 1

Trang 1

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 2

Trang 2

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 3

Trang 3

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 4

Trang 4

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 5

Trang 5

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 6

Trang 6

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 7

Trang 7

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 8

Trang 8

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 9

Trang 9

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 255 trang duykhanh 4320
Bạn đang xem 10 trang mẫu của tài liệu "Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web

Giáo trình Mô đun Lập trình Web nâng cao (XML) - Thiết kế trang Web
ring() ); 
 } 
 } 
} 
Trong ví dụ trên, chúng ta tạo ra tập tin titles.xml, trong ví dụ dưới đây, chúng ta sẽ xem 
xét việc tạo đối tượng Recordset từ tập tin titles.xml ở trên. 
XML2ADORecordset.cs: Recreating the Recordset object from the titles.xml file. 
using System; 
using System.Data; 
using System.Data.SQL; 
public class XML2ADORecordset 
{ 
241 
 public static void Main( String[] args ) 
 { 
 try 
 { 
 String connString = "provider=SQLOLEDB;" + 
 "initial catalog=pubs;" + 
 "server=localhost;" + 
 "uid=sa;" + 
 "pwd="; 
 Int32 adCmdFile = 256; 
 /* Instantiate Recordset object */ 
 ADODB.Recordset rs = new ADODB.Recordset(); 
 /* Open the titles.XML file into Recordset object */ 
 rs.Open( "titles.xml", connString, 
 ADODB.CursorTypeEnum.adOpenForwardOnly, 
 ADODB.LockTypeEnum.adLockReadOnly, 
 adCmdFile ); 
 /* Display the value of the price field for the first record */ 
 rs.MoveFirst(); 
 Console.WriteLine( rs.Fields[ "price" ].Value ); 
 /* close the Recordset object */ 
 rs.Close(); 
 } 
 catch ( Exception e ) 
 { 
 Console.WriteLine( "Exception: {0}", e.ToString() ); 
 } 
 } 
} 
XML sự hỗ trợ trong ADO hạn chế để nói là bé nhất. Bạn có thể chỉ vẫn tạo và xây dựng 
lại những đối tượng Recordset qua lại giữa tập tin XML và stream. Tập tin XML vẫn tách biệt 
với đối tượng Recordset cũ và bất kỳ sự thay đổi nào mà chúng ta tạo ra sẽ không được thể 
hiện một cách tự động. 
ADO.NET 
ADO.NET được chào hàng như người kế thừa từ ADO và dựa trên nền tảng XML. Tiêu 
điểm lõi của ADO.NET sẽ cung cấp một API tạo điều kiện thuận lợi cho sự tạo thành những 
ứng dụng phân tán, biến đổi được, và tương tác được và chia sẻ dữ liệu trong một kiểu 
không kết nối liên tục. 
ADO.NET gồm có hai phần: lớp Dataset và Managed Providers. Lớp Dataset cung cấp 
những phương thức và thuộc tính để truy nhập và thao tác dữ liệu có quan hệ. . Managed 
Providers mô tả dữ liệu lưu trữ nằm bên dưới như một cơ sở dữ liệu Microsoft SQL Server. 
Các không gian tên xây dựng trong ADO.NET 
Không gian tên Diễn giải 
System.Data Chứa lớp Dataset và các lớp cơ sở khác 
System.Data.ADO Chứa các lớp ADO Managed Provider. 
System.Data.SQL Chứa các lớp SQL Server Managed Provider. 
System.Data.SQLT
ypes 
Chứa các lớp cho các kiểu dữ liệu trong SQL 
Server. 
Lớp DataSet 
Lớp DataSet là trung tâm đối với ADO.NET và là gói chính cho sự truy nhập dữ liệu và 
sự thao tác trong .NET Framework. DataSet là kết nối không thường xuyên và là hiển thị từ 
trong bộ nhớ của một cơ sở dữ liệu. Bạn có thể có một DataSet động được tạo ra và cư trú 
với dữ liệu không có một byte đơn của truyền thông được tạo ra với một DBMS. Sự khử 
242 
ghép này giữa dữ liệu và nguồn dữ liệu nằm bên dưới là lõi có thể cho phương thức hành 
động kết nối không liên tục ADO.NET. 
Từ bên trong, chúng có thể nghĩ về một Dataset như một tài liệu XML chứa đựng một 
hoặc nhiều mẩu bản in rời hay liên hệ những phần tử XML xếp thành bảng. Thật ra, .NET 
cung cấp một mô hình lập trình hợp nhất để truy nhập dữ liệu được đại diện cho như cả dữ 
liệu XML lẫn dữ liệu có quan hệ. Bạn có thể bắt đầu với một DataSet và làm việc với dữ liệu 
đi theo sau một đường không tuần tự, có thứ bậc được điều khiển bởi XML DOM. Bù lại, 
bạn có thể làm việc với tài liệu XML trong kiểu hàng- sau- hàng xuyên qua một Dataset sử 
dụng một mô hình quan hệ. 
Lớp The XmlDataDocument 
Lớp XmlDataDocument được mở rộng từ chính lớp XmlDocument, nào là sự bọc trong 
nang sơ cấp trong ADO.NET cho một tài liệu XML. XmlDataDocument cung cấp khả năng 
thêm để thao tác dữ liệu có quan hệ. cũng như tất cả XML khác- những lớp liên 
quan,XmlDataDocument cư trú không gian tên System.Xml.. 
Trong ví dụ sau dùng mã lệnh C# để nhận dữ liệu từ một cơ sở dữ liệu SQL Server và 
sử dụng XmlDataDocument để thao tác dữ liệu: 
DataSet2XmlDataDocument.cs: Manipulating relational data using the DOM. 
using System; 
using System.IO; 
using System.Data; 
using System.Data.SQL; 
using System.Xml; 
public class DataSet2XmlDataDocument 
{ 
 public static void Main( String[] args ) 
 { 
 SQLConnection conn = null; 
 try 
 { 
 /* connect to the SQL Server database */ 
 conn = new SQLConnection( "server= 
localhost;uid=sa;pwd=;database=pubs" ); 
 /* execute SQL query */ 
 SQLDataSetCommand cmd = new SQLDataSetCommand( "select * from Titles", 
conn ); 
 /* create a DataSet and populate it with the records returned from 
 result of the above SQL query */ 
 DataSet ds = new DataSet(); 
 cmd.FillDataSet( ds, "Titles" ); 
 /* associate this DataSet with an XmlDataDocument */ 
 XmlDataDocument doc = new XmlDataDocument( ds ); 
 /* you can now process this doc just like any 
DataDocument. For example, 
 the following uses DataDocumentNavigator to select the first Titles node 
 and modifies the value. */ 
 DataDocumentNavigator nav = new DataDocumentNavigator 
( doc ); 
 nav.Select( "//NewDataSet/Titles[1]/title_id" ); 
 if ( nav.MoveToNextSelected() ) 
 { 
 Console.WriteLine( "Original=" + nav.InnerText ); 
 } 
 else 
 { 
 Console.WriteLine( "Unexpected error: Node not found" ); 
 } 
243 
 nav.InnerText = "BU1030"; /* modify the value of the title_id node */ 
 /* XmlDataDocument auto synchronizes the above change with the associated 
 DataSet. */ 
 Console.WriteLine( "Modified=" + ds.Tables[ "Titles" ].Rows[ 0 ][ "title_id" ] ); 
 } 
 finally 
 { 
 if ( conn != null && conn.State == DBObjectState.Open ) 
 { 
 conn.Close(); 
 } 
 } 
 } 
} 
Ví dụ sau thao tác với dữ liệu sử dụng một Dataset 
XmlDataDocument2DataSet.cs: Manipulating an XML document using a DataSet. 
using System; 
using System.IO; 
using System.Data; 
using System.Xml; 
public class Xml2DataSet 
{ 
 public static void Main() 
 { 
 try 
 { 
 /* instantiate a XmlDataDocument */ 
 XmlDataDocument doc = new XmlDataDocument(); 
 /* load the schema */ 
 doc.DataSet.ReadXmlSchema( "book.xsd" ); 
 /* now load the XML document */ 
 doc.Load( "book.xml" ); 
 /* print original price value of first Title node */ 
 DataDocumentNavigator nav = new DataDocumentNavigator( doc ); 
 nav.Select( "//Book/Titles[1]/price" ); 
 if ( nav.MoveToNextSelected() ) 
 { 
 Console.WriteLine( "Original=" + nav.InnerText ); 
 } 
 /* update a price using the associated DataSet */ 
 DataTable books = doc.DataSet.Tables[ "Titles" ]; 
 books.Rows[ 0 ][ "price" ] = "12.99"; 
 /* display modified price */ 
 nav.Select( "//Book/Titles[1]/price" ); 
 if ( nav.MoveToNextSelected() ) 
 { 
 Console.WriteLine( "Modified=" + nav.InnerText ); 
 } 
 } 
 catch (Exception e) 
 { 
 Console.WriteLine ("Exception: {0}", e.ToString()); 
 } 
 } 
} 
Ví dụ sau là tài liệu xml được sử dụng ở trên: 
book.xml: An XML document used in XmlDataDocument2DataSet.cs. 
244 
 BU1032 
 The Busy Executive's Database Guide 
 business 
 1389 
 19.99 
 5000 
 10 
 4095 
 An overview of available database systems with 
emphasis on common business applications. Illustrated. 
 1991-06-11T16:00:00 
 BU1111 
 Cooking with Computers: Surreptitious Balance Sheets 
 business 
 1389 
 11.95 
 5000 
 10 
 3876 
 Helpful hints on how to use your 
electronic resources to the best advantage. 
 1991-06-08T16:00:00 
 BU2075 
 You Can Combat Computer Stress! 
 business 
 0736 
 2.99 
 10125 
 24 
 18722 
 The latest medical and psychological techniques for living 
with the electronic office. Easy-to-understand explanations. 
 1991-06-29T16:00:00 
Sau đây là tập tin giản đồ sử dụng cho tập tin book.xml: 
16-6 book.xsd: The XML schema for book.xml. 
<xsd:schema id="Book" targetNamespace="" xmlns="" 
xmlns:xsd="" xmlns:msdata= 
"urn:schemas-microsoft-com:xml-msdata"> 
245 
IV. Parsing và tạo các tài liệu XML. 
XmlReader và XmlWriter là những lớp trừu tượng của mô hình đối tượng XML trong 
.NET Framework. XmlReader cung cấp API để đọc những tài liệu XML, trong khi XmlWriter 
cung cấp API bổ sung để sản xuất những tài liệu XML tương thích W3C. Trong việc thiết kế 
những lớp này, Microsoft mượn những khái niệm từ cả DOM lẫn SAX. 
XmlReader 
Lớp trừu tượng XmlReader cung cấp một con trỏ nhanh, chỉ đọc, và chỉ đọc tiến những 
tài liệu XML. Việc sử dụng XmlReader nhiều cũng như việc sử dụng DOM, bạn đọc và làm 
việc với một nút tại một thời điểm. Một phương thức C# sau đây mà đi ngang qua một tài 
liệu XML và trình bày những tên của tất cả các phần tử trong tài liệu. 
public void DisplayElements( XmlReader reader ) 
{ 
 /* read the next node in document order */ 
 while ( reader.Read() ) 
 { 
 /* if this is an element node, display its name */ 
 Console.WriteLine( reader.Name ); 
 } 
} 
Phương thức C# sau đây sẽ hiển thị giá trị trong phần tử hiện tại: 
public void DisplayNode( XmlReader node ) 
{ 
 switch ( node.NodeType ) 
 { 
 case XmlNodeType.Element: 
 Console.Write( "" ); 
 break; 
 case XmlNodeType.Text: 
 Console.Write( node.Value ); 
 break; 
 case XmlNodeType.CDATA: 
 Console.Write( node.Value ); 
 break; 
 case XmlNodeType.ProcessingInstruction: 
 Console.Write( "" ); 
 break; 
 case XmlNodeType.Comment: 
 Console.Write( "" ); 
 break; 
 case XmlNodeType.Document: 
 Console.Write( "" ); 
 break; 
 case XmlNodeType.Whitespace: 
246 
 Console.Write( node.Value ); 
 break; 
 case XmlNodeType.SignificantWhitespace: 
 Console.Write( node.Value ); 
 break; 
 case XmlNodeType.EndTag: 
 Console.Write( "" ); 
 break; 
 } 
} 
Đoạn lệnh sau sẽ đọc các giá trị thuộc tính: 
for ( int = 0; i < node.AttributeCount; i++ ) 
{ 
 Console.WriteLine( node.GetAttribute( i ) ); 
} 
hoặc 
while ( node.MoveToNextAttribute() ) 
{ 
 Console.Write( " " + node.Name + "=\"" + node.Value + "\"" ); 
} 
Một ví dụ về đọc tài liệu XML: 
ReadXML.cs: A C# console using the discussed methods and properties. 
using System; 
using System.IO; 
using System.Xml; 
public class ReadXML 
{ 
 public void DisplayNode( XmlReader node ) 
 { 
 switch ( node.NodeType ) 
 { 
 case XmlNodeType.Element: 
 Console.Write( "<" + node.Name ); 
 while ( node.MoveToNextAttribute() ) 
 { 
 Console.Write( " " + node.Name + "=\"" + node.Value + "\"" ); 
 } 
 Console.Write(">"); 
 break; 
 case XmlNodeType.Text: 
 Console.Write( node.Value ); 
 break; 
 case XmlNodeType.CDATA: 
 Console.Write( node.Value ); 
 break; 
 case XmlNodeType.ProcessingInstruction: 
 Console.Write( "" ); 
 break; 
 case XmlNodeType.Comment: 
 Console.Write( "" ); 
 break; 
 case XmlNodeType.Document: 
 Console.Write( "" ); 
 break; 
 case XmlNodeType.Whitespace: 
 Console.Write( node.Value ); 
 break; 
247 
 case XmlNodeType.SignificantWhitespace: 
 Console.Write( node.Value ); 
 break; 
 case XmlNodeType.EndTag: 
 Console.Write( "" ); 
 break; 
 } 
 } 
 public void DisplayElements( XmlReader reader ) 
 { 
 /* read the next node in document order */ 
 while ( reader.Read() ) 
 { 
 DisplayNode( reader ); 
 } 
 } 
 public static void Main( String[] args ) 
 { 
 XmlTextReader reader = new XmlTextReader( "book.xml" ); 
 ReadXML tr = new ReadXML(); 
 tr.DisplayElements( reader ); 
 } 
} 
Ví dụ về việc sử dụng mã lệnh kiểm tra hợp lệ bằng cách sử dụng giản đồ: 
Validation.cs: Code that validates an XML file using schema validation. 
using System; 
using System.IO; 
using System.Xml; 
public class Validation 
{ 
 static bool gotError = false; 
 public static void Main( String[] args ) 
 { 
 /* make sure we were passed with a filename */ 
 if ( args.Length == 0 ) 
 { 
 Console.WriteLine( "Usage: validation filename" ); 
 return; 
 } 
 try 
 { 
 /* Instantiates an XmlReaderWriter using the filename passed 
 in from the command line */ 
 XmlTextReader reader = new XmlTextReader( args[ 0 ] ); 
 /* Specify the validation method */ 
 reader.Validation = Validation.Schema; 
 /* Register event handler for reporting validation errors */ 
 reader.ValidationEventHandler += new ValidationEventHandler 
( OnValidateError ); 
 /* traverse the whole document */ 
 while ( reader.Read() ); 
 if ( !gotError ) 
 { 
 Console.WriteLine( "Document is valid" ); 
 } 
 } 
 catch ( Exception e ) 
248 
 { 
 Console.WriteLine( "Error: " + e.Message ); 
 } 
 } 
 public static void OnValidateError( Object sender, ValidationEventArgs args ) 
 { 
 gotError = true; 
 Console.WriteLine( "Error: " + args.Message ); 
 } 
} 
XmlWriter 
XmlWriter là lớp trừu tượng cho phép xuất bản dòng dữ liệu tương thích W3C XML. 
Đoạn mã lệnh sau là minh họa cho việc sử dụng lớp XmlWriter 
WriteXML.cs: Code that generates an XML document to the console. 
using System; 
using System.IO; 
using System.Xml; 
public class WriteXML 
{ 
 public static void Main( String[] args ) 
 { 
 /* Instantiates an XmlTextWriter that writes to the console */ 
 XmlTextWriter writer = new XmlTextWriter( Console.Out ); 
 /* Use indenting for readability */ 
 writer.Formatting = Formatting.Indented; 
 writer.Indentation = 4; 
 /* Now write out our XML document */ 
 writer.WriteStartDocument(); 
 writer.WriteStartElement( "Persons" ); 
 writer.WriteStartElement( "Person" ); 
 writer.WriteStartElement( "Name" ); 
 writer.WriteStartAttribute( null, "firstName", null ); 
 writer.WriteString( "Albert" ); 
 writer.WriteEndAttribute(); 
 writer.WriteStartAttribute( null, "lastName", null ); 
 writer.WriteString( "Einstein" ); 
 writer.WriteEndAttribute(); 
 writer.WriteEndElement(); 
 writer.WriteEndElement(); 
 writer.WriteStartElement( "Person" ); 
 writer.WriteStartElement( "Name" ); 
 writer.WriteStartAttribute( null, "firstName", null ); 
 writer.WriteString( "Niels" ); 
 writer.WriteEndAttribute(); 
 writer.WriteStartAttribute( null, "lastName", null ); 
 writer.WriteString( "Bohr" ); 
 writer.WriteEndAttribute(); 
 writer.WriteEndElement(); 
 writer.WriteEndElement(); 
 writer.WriteEndElement(); 
 writer.WriteEndDocument(); 
 /* Don't forget to close the writer */ 
 writer.Close(); 
 } 
} 
BÀI TẬP VỀ NHÀ 
249 
1. Hãy xây dựng một ứng dụng thực tế cài đặt các ứng dụng hướng e-Business bằng 
Biztalk Server 
250 
CÁC THUẬT NGỮ CHUYÊN MÔN 
Markup Language: ngôn ngữ đánh dấu 
onload event : bắt đầu load 
Database Management Systems –DBMSs : hệ quản trị cơ sở dữ liệu 
Structured Query Language –SQL : ngôn ngữ truy vấn cấu trúc 
Binary Large Object –BLOB : đối tượng nhị phân lớn 
 NULL : rỗng 
Validate: kiểm tra sự hợp lệ 
Schema: giản đồ 
cascading style sheet (CSS): một loại style sheet dùng để chỉ định màu và kiểu chữ 
DBMSs (Database Management Systems ): hệ quản trị cơ sở dữ liệu 
RDBMS (Relational DBMS): Hệ quản trị cơ sở dữ liệu quan hệ 
251 
TÀI LIỆU THAM KHẢO 
1.  – Các bài báo và tin tức về XML 
2.  - World Wide Web Consortium 
3.  .com/xml - Web site XML của Microsoft 
4.  .com/tech/metadata/index .html - 
5.  .ibm.com/xml - Web site XML của IBM 
6.  .com - 
7.  
8.  

File đính kèm:

  • pdfgiao_trinh_mo_dun_lap_trinh_web_nang_cao_xml_thiet_ke_trang.pdf