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.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
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
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:
- giao_trinh_mo_dun_lap_trinh_web_nang_cao_xml_thiet_ke_trang.pdf