Lập trình web nâng cao XML - Trường CĐN Đà Lạt - 5

Dim objXML ' DOM for XML Dim objXSL ' DOM for XSL

Dim strResult ' Resultant document 'Load the XML document.

Set objXML = CreateObject("Microsoft.XMLDom") objXML.Async = False

objXML.Load "c:Order.xml" 'Load the XSL style sheet.

Set objXSL = CreateObject("Microsoft.XMLDom") objXSL.Async = False

objXSL.Load "c:Order.xsl" 'Apply the style sheet to XML

strResult = objXML.transformNút(objXSL)

Sau khi chạy đoạn code trên, strResult sẽ chứa hồ sơ kết quả.

Hình dưới đây minh họa vai trò của XSLT processor trong công tác transform một hồ sơ XML dựa vào một XSLT (từ giờ trở đi ta có thể dùng từ XSLT thế cho XSL cũng được) file:

Ta cũng có thể code bằng JavaScript để chạy trong Browser thay vì trong WebServer như 1

Có thể bạn quan tâm!

Xem toàn bộ 258 trang tài liệu này.

Ta cũng có thể code bằng JavaScript để chạy trong Browser, thay vì trong WebServer, như cho thấy trong trang Web dưới đây. Nó cũng cho ra cùng một kết quả như khi dùng IE để hiển thị XML trực tiếp.

<HTML>

<HEAD>

<TITLE>sample</TITLE>

<SCRIPT language="javascript"> function init()

{

var srcDOM = new ActiveXObject("Msxml2.DOMDocument.4.0"); srcDOM.async=false;

srcDOM.load("order.xml");


var xsltDOM= new ActiveXObject("Msxml2.DOMDOCUMENT.4.0");

xsltDOM.async = false; xsltDOM.load("order.xsl");


resDOM.innerHTML = srcDOM.transformNút(xsltDOM);

}

</SCRIPT>

</HEAD>

<BODY onload="init()">

<div id="resDOM"></div>

</BODY>

</HTML>

Có lẽ chúng ta hỏi tại sao ta không dùng thẳng XML như phía trên để hiển thị trang Web. Lưu ý là ta có thể dùng kỹ thuật nầy để Transform một XML với XSL rồi hiển thị nó bên trong một DIV, tức là một vùng giới hạn bên trong trang Web, chớ không chiếm cả trang Web. Tại đây khi trang Web bắt đầu load (onload event), IE gọi function init() để transform XML rồi assign kết quả vào property innerHTML của DIV resDOM.

Có một method khác ta cũng có thể dùng thay cho transformNút là transformNútToObject. Sự khác biệt chính giữa hai methods nầy là:

transformNút: Kết quả của method nầy là một tree dưới dạng text string, điển hình là một hồ sơ HTML. Ta có thể cho nó hiển thị trong một browser hay lưu trữ vào một file.

transformNútToObject: Kết quả của method nầy được để vào trong một object khác, rồi chính object ấy có thể sẽ được xử lý thêm.

Khi ta dùng một trong hai method nói trên, thật ra object nguồn (source object) không cần phải là một hồ sơ đầy đủ. Nó có thể chỉ là một Nút của hồ sơ XML. Nếu nó chỉ là một Nút thì cái XSLT processor xem tập hợp Nút ấy, và các Các nút con cháu của nó như một hồ sơ đầy đủ. Tương tự như vậy, một object XSL có thể là một file XSL đầy đủ, hay chỉ là một Nút bên trong một file XSL.

Để parse tài liệu XML trong môi trường .NET, chúng ta sử dụng một trong các lớp sau XmlTextReader, XmlDocument, XmlSerializer, DataSet và XpathDocument. Chúng ta sẽ xem xét một vài ví dụ sau:

Tài liệu family.xml

<?xml version="1.0" encoding="UTF-8"?>

<family>

<name gender="Male">

<firstname>Tom</firstname>

<lastname>Smith</lastname>

</name>

<name gender="Female">

<firstname>Dale</firstname>

<lastname>Smith</lastname>

</name>

</family>


Ví dụ sau sử dụng XMLTextReader Imports System.IO

Imports System.Xml

Module ParsingUsingXmlTextReader Sub Main()

Dim m_xmlr As XmlTextReader 'Create the XML Reader

m_xmlr = New XmlTextReader("C:Personalfamily.xml")

'Disable whitespace so that you don't have to read over whitespaces m_xmlr.WhiteSpaceHandling = WhiteSpaceHandling.NONE

'read the xml declaration and advance to family tag m_xmlr.Read()

'read the family tag m_xmlr.Read()

'Load the Loop

While Not m_xmlr.EOF 'Go to the name tag m_xmlr.Read()

'if not start element exit while loop

If Not m_xmlr.IsStartElement() Then Exit While

End If

'Get the Gender Attribute Value

Dim genderAttribute = m_xmlr.GetAttribute("gender") 'Read elements firstname and lastname m_xmlr.Read()

'Get the firstName Element Value

Dim firstNameValue = m_xmlr.ReadElementString("firstname") 'Get the lastName Element Value

Dim lastNameValue = m_xmlr.ReadElementString("lastname") 'Write Result to the Console

Console.WriteLine("Gender: " & genderAttribute _

& " FirstName: " & firstNameValue & " LastName: " _ & lastNameValue)

Console.Write(vbCrLf)

End While 'close the reader m_xmlr.Close() End Sub

End Module

Parsing tài liệu XML với XmlDocument Imports System.IO

Imports System.Xml

Module ParsingUsingXmlDocument Sub Main()

Try

Dim m_xmld As XmlDocument Dim m_nodelist As XmlNodeList Dim m_node As XmlNode 'Create the XML Document m_xmld = New XmlDocument() 'Load the Xml file

m_xmld.Load("C:CMSPersonalfamily.xml") 'Get the list of name nodes

m_nodelist = m_xmld.SelectNodes("/family/name") 'Loop through the nodes

For Each m_node In m_nodelist 'Get the Gender Attribute Value

Dim genderAttribute = m_node.Attributes.GetNamedItem("gender").Value 'Get the firstName Element Value

Dim firstNameValue = m_node.ChildNodes.Item(0).InnerText 'Get the lastName Element Value

Dim lastNameValue = m_node.ChildNodes.Item(1).InnerText 'Write Result to the Console

Console.Write("Gender: " & genderAttribute _

& " FirstName: " & firstNameValue & " LastName: " _ & lastNameValue)

Console.Write(vbCrLf) Next

Catch errorVariable As Exception 'Error trapping

Console.Write(errorVariable.ToString()) End Try

End Sub End Module

BÀI TẬP VỀ NHÀ

1. Phân tích cú pháp của một tài liệu XML?

2. Hãy so sánh hai cấu trúc của HTML và XLM?

BÀI 2

Tên bài: XÂY DỰNG CÁC ỨNG DỤNG TRÊN WEB THEO HƯỚNG DỰA VÀO XML

Mã bài : 02


Giới thiệu :

Trong bài này, chúng ta nghiên cứu phương pháp tích hợp và trao đổi dữ liệu dùng XML cũng như phương pháp vận dụng XML vào trong các ứng dụng Web..


Mục tiêu thực hiện:

Học xong bài này học viên sẽ có khả năng:

- Từ bài toán ứng dụng trên Web triển khai các vấn đề chính bao gồm:

- Tích hợp mức CSDL, phát triển Web, phát triển giao diện người dùng, kỹ thật Messaging dựa vào XML, tạo Metadata, tạo ứng dụng mức Server và mức Client.

- Khai thác được các thế mạnh đặc trưng của XML trong việc xây dựng các ứng dụng tích hợp trên Web.

Nội dung chính:

I. Tích hợp mức CSDL

Một trong những thế mạnh của ứng dụng máy tính là khả năng lưu trữ, tổ chức và nhận một lượng lớn dữ liệu. Một sưu tập tổ chức của dữ liệu được tham chiếu như một cơ sở dữ liệu và các chương trình được thiết kế để quản lý các dữ liệu được gọi là hệ quản trị cơ sở dữ liệu (Database Management Systems –DBMSs)

Trong nội dung phần này, chúng ta sẽ nghiên cứu và bàn luận về cách sử dụng XML với cơ sở dữ liệu.

- Các kiểu DBMS:

Số lượng các kiểu khác nhau của DBMS đã nổi lên trong các năm qua. Dấu hiệu khác biệt nhất giữa chúng là cách thức chúng sử dụng để lưu trữ, quản lý và truy vấn cơ sở dữ liệu. Chúng ta sẽ khảo sát một cách nhanh chóng về một số DBMS thông dụng về cách thức thiết kế của chúng và những lợi thế cũng như những mặt không lợi thế của chúng.

+ Cơ sở dữ liệu thứ bậc hay thừa kế (Hierarchical DBMS -HDBMS)

Được sử dụng trong thời kỳ máy tính lớn, một HDBMS liên kết các bản ghi, gọi là các nút (nodes), lại với nhau giống như một gia đình cây, nghĩa là mỗi kiểu bản ghi chỉ có một cha. Trong ví dụ dưới đây, một order chỉ có một cha customer. Hình sau minh họa:

Các nút trên cây trên liên kết với nhau bởi các con trỏ người sử dụng phải 2

Các nút trên cây trên liên kết với nhau bởi các con trỏ, người sử dụng phải chỉ định chính xác. Ví dụ, Order (0706) được liên kết với Customer(055). Tất cả các nút được liên kết với nhau là một dạng biểu diễn của một cấu trúc cây.

Sự bất lợi chính của HDBMS là nó khó có thể truy vấn. Ví dụ, một truy vấn để nhận nút Item có ProductName trong cơ sở dữ liệu Orders, chúng ta phải chỉ định rõ ràng như sau:

055/0706/000763

Cần phải chú ý rằng truy vấn trên chỉ định một đường dẫn chỉ định các nút. (Về khía cạnh náy, nó giống Xpath để đi lại các nút trong một tài liệu XML). Tuy nhiên, nếu chúng ta muốn biêt tất cả các Orders chúng ta cũng phải sử dụng item, đây là cách duy nhất để có thể đánh giá rằng thời gian tìm kiếm sẽ có một giá rất đắc khi tìm kiếm mỗi nút Order.

+ Hệ quản trị cơ sở dữ liệu quan hệ (Relational DBMS – RDBMS)

Cơ sở dữ liệu quan hệ được đưa ra bởi tiến sĩ E.F.Codd của IBM và được viết trong một tạp chí với tiêu đề "A Relational Model of Data for Large Shared Data Banks" vào năm 1970. Một RDBMS lưu trữ tập hợp các bảng, mỗi bảng là một tập hợp cố định các cột hay trường. Một sự không giới hạn các dòng hoặc các bản ghi có thể xuất hiện trong mỗi bảng. So sánh với kiểu HDBMS, RDBMS phức tạp hơn. Tuy nhiên, một kiểu quan hệ cung cấp nhiều nền tảng mềm dẻo để truy cập dữ liệu và điều tác dữ liệu.

Hình sau minh họa cơ sở dữ liệu quan hệ với 3 bảng: Customer, Order, and Item.

Không giống như HDBMS mối quan hệ giữa các bảng trong một RDBMS được tạo ra 3

Không giống như HDBMS, mối quan hệ giữa các bảng trong một RDBMS được tạo ra vào lúc thực thi bằng liên kết cột khóa từ bảng này đến một bảng khác. Cơ sở dữ liệu này sử dụng hai kiểu khóa, khóa chính và khóa ngoại là khóa có khóa chính nằm trên một bảng khác. Ví dụ, trong hình sau, CustomerNo là khóa chính của bảng Customer trong khi OrderNo là khóa chính của bảng Order. Bảng Order cũng có một khóa ngoại, Customer, khóa ngoại này liên kết đến cột CustomerNo của bảng Customer. Do đó, trong trường hợp này bảng Customer được gọi là bảng cha và Order là bảng con.

Khi xử lý các bảng liên kết cùng với nhau tại thời điểm thực thi gọi sử dụng khóa chính gọi là sự nối kết các bảng. Một thành phần khóa trong cơ sở dữ liệu quan hệ tạo nên một số ràng buộc giữa các bảng đã được nối kết. Tính chất này cho phép cùng một cơ sở dữ liệu có thể hiển thị và sử dụng theo nhiều cách khác nhau.

Thêm vào đó, bởi vì một cơ sở dữ liệu quan hệ có thể trải ra trên nhiều bảng, cơ sở dữ liệu có thể được thiết kế với sự trùng lặp dữ liệu là thấp nhất. Hiểu theo một cách bình thường, một tác nhân có thể thêm, xóa, và điều chỉnh dữ liệu trong một bảng sẽ ảnh hướng tới những bảng khác dựa trên các quan hệ được thiết kế.

Cuối cùng, RDMBS sử dụng ngôn ngữ truy vấn cấu trúc (Structured Query Language – SQL) để truy vấn, trích xuất và cập nhật dữ liệu lưu trữ trong cơ sở dữ liệu và dữ liệu có thể từ chối nếu như nó vi phạm luật của quan hệ. Ví dụ, để tìm tất cả các Item đã được mua bởi khách hàng Jonh, chúng ta có thể sử dụng câu lệnh SQL sau:

SELECT ProductNo, Desc FROM Customer, Order, Item

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 19/11/2023