XML và quản lý sinh viên
Trang 1ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÀI TẬP LỚN Môn Công nghệ XML và ứng dụng
ĐỀ TÀI: Xây Dựng Trang Quản Lý Sinh Viên
Thành Viên:
M c L c ục Lục ục Lục
Chương 1 Giới thiệu XML Và PHP 2
1.1 Tổng quan về XML 2
1.1.1 Giới thiệu 2
1.1.2 Mục tiêu ra đời và lợi ích khi sử dụng 3
Trang 21.1.3 Ngôn ngữ định dạng(Markup languages) 3
1.1.4 Những thành phần của một tài liệu XML 4
1.1.4 Một tài liệu XML hợp khuôn dạng 5
1.1.5 Một tài liệu XML hợp lệ 5
1.1.6 Các kiểu dữ liệu trong XML 8
1.2 Giới thiệu PHP 11
CHƯƠNG 2 Sử Dụng XML Và PHP Xây Dựng Trang Quản Lý Sinh Viên 14
2.1 Phân tích thiết kế hệ thống 14
2.1.1 Biểu đồ Use tổng quát 14
2.1.2 Biểu đồ tuần tự “đăng nhập” 15
2.1.3 Biểu đồ trình tự cập nhật thông tin của Admin 16
2.2 Thiết kế cơ sở dữ liệu dùng XML 17
2.2.1 Lược đồ Schema XML 17
2.2.2 Tài liệu XML 18
2.3 Trang Quản Lý Sinh Viên 19
Chương 1 Giới thiệu XML Và PHP
1.1 Tổng quan về XML
1.1.1 Giới thiệu
XML(Extensible Markup Language) ra đời tháng 2/1998, là ngôn ngữ có kiến trúc gần giống HTML nhưng XML được nhanh chóng trở thành một chuẩn phổ biến trong công việc chuyển đổi thông tin qua các trang web sử dụng giao
Trang 3thức HTTP Trong khi HTML là ngôn ngữ chủ yếu về hiển thị dữ liệu thì XML lại được phát triên mạnh về việc chuyển tải, trao đổi và thao tác dữ liệu bằng XML XML đưa ra một định dạng chuẩn cho cất trúc của dữ liệu hoặc thông tin bằng việc tự định dạng chuẩn của tài liệu Bằng cách này, dữ liệu được lưu trữ bằng XML sẽ độc lập với việc xử lý Vì vậy XML ra đời sẽ đáp ứng ngày càng cao của các nhà lập trình trong vấn đề trao đổi thông tin và xử lý thông tin
1.1.2 Mục tiêu ra đời và lợi ích khi sử dụng
Trong quá trình trưởng thành và phát triển, XML đã đối mặt và đương đầu với nhiều thử thách trong việc thuyết phục các nhà lập trình rằng XML là sự lựa chọn hàng đầu vì nó dễ dàng để hiểu, dễ dàng đọc và dễ dàng thực hiện
- Xml có thể được tách rời dữ liệu, sử dụng xml dữ liệu đước chứa trong các tập tin XML riêng biệt
- Xml có thể mô tả thông tin của những đối tượng phức tạp mà cơ sở dữ liệu quan hệ không thể giải quyết được
- Xml có thể dùng để chuyển đổi dữ liệu giữa các hệ thống không tương thích
- Xml có thể chia sẻ dữ liệu vơi những tập tin văn bản đơn giản dễ hiểu
- Xml cũng được dùng để lưu trữ dữ liệu, có thể làm cho dữ liệu của chúng
ta hữu ích hơn
Như vậy, chúng ta đã biết được lợi ích và vai trò của XML trong vấn đề lưu trữ và trao đổi thông tin
1.1.3 Ngôn ngữ định dạng(Markup languages)
Ngôn ngữ định dạng là tất cả những gì dùng để mô tả nội dung một tài liệu
Đó là cách nội dung của tài liệu được diễn dịch Ngôn ngữ định dạng mà mọi người quen nhất là HTML HTML là ngôn ngữ cho phép tạo các trang web
Trang 4XML và HTML rất giống nhau, cả hai đều dựa trên chuẩn ngôn ngữ định dạng tổng quát SGML (Standard Geeneralized Marup Language) SGML là ngôn ngữ định dạng tổng quát bao hàm nhiều khả năng to lớn Bởi vì SGML làm được rất nhiều thứ, cho nên tuy tổng quát nhưng khó học và thực thế thì SGML ít được dùng Trong khi đó XML là tập con của SGML nhưng lại dễ dùng, dễ sử dụng ở mức tổng quát
Ngôn ngữ HTML không đủ để biểu diễn các thông tin cho mục đích riêng
Ví dụ, chúng ta muốn xây dựng một mô hình xe máy và chúng ta muốn trao đổi những đặc tả về chiếc tàu với các đồng nghiệp? HTML không hề chứa thẻ định nghĩa với các tên như <SINHVIEN>, <COLOR>, hay những thẻ mà muốn mô tả về xe máy Chúng ta cần thêm các thẻ để mô tả thông tin về xe máy
1.1.4 Những thành phần của một tài liệu XML
Khai báo: mỗi tài liệu XML có một chỉ thị khai báo:
<? xml version =”1.0” ?>
Chú thích: <! chú thích >
Phần tử (Elments): một tài liệu XML được cấu thành từ những phần tử Mỗi phần tử có thẻ mơ và thẻ đóng Giữa thẻ mở và thẻ đóng là nội dung của phần tử đó Phần tử có thể chứa dữ liệu hoặc có thể lồng vào một phần tử khác
Phần tử gốc (root): trong tài liệu XML, chỉ có một phần tử gốc, và phần
tử này sẽ chứa tất cả những phần tử của tài liệu XML do chúng ta tạo ra
Thuộc tính ( attributes ): một phần tử có thể chứa nhiều dữ liệu hoặc phần tử khác hoặc cả hai Bên cạnh đó, phần tử có thể rỗng, khi đó nó
có thể chứa thuộc tính Một thuộc tính chỉ là sự lựa chọn để gắn dữ liệu đến phần tử Một thuộc tính đặt trong thẻ mở của phần tử và chỉ
ra giá trị của nó bằng cách sử dụng cặp “name= value”
Trang 5<?xml version=“1.0” encoding=“UTF-8”?>
<DOCUMENT>
<GREETING>Hello from XML</GREETING>
<MESSAGES>Well come to XML</MESSAGES>
</DOCUMENT>
1.1.4 Một tài liệu XML hợp khuôn dạng
Tài liệu XML phải bắt đầu bằng câu khai báo XML:
< ?xml version=“1.0” ?>
Mỗi phần tử nằm giữa một cặp thẻ
Nếu thẻ nào không chứa gì ở giữa thì phải chấm dứt bằng “/>”
Một tài liệu XML phải có một phần duy nhất chứa tất cả các thành phần khác Đó là phần gốc của cây biểu diễn tài liệu XML
Các cặp thẻ không được xen kẽ nhau
1.1.5 Một tài liệu XML hợp lệ
Hợp khuôn dạng có nghĩa là một tài liệu chỉ có nút gốc, mỗi phần tử phải có thẻ mở và thẻ đóng, và phải lồng nhau chính xác, và cuối cùng là tên thuộc tính chỉ xuất hiện một lần trong thẻ mở Nhưng một tài liệu XML hợp khuôn dạng không có nghĩa là nó hợp lệ Muốn kiểm tra sự hợp lệ của một tài liệu XML ta phải dựa vào DTD hoặc Schema XML
DTD (Document Type Definition)
DTD và Schema là hai cách khác nhau để quy định những luật về nội dung của một tài liệu XML Tuy nhiên DTD có một vài hạn chế Đầu tiên DTD không phải là một tài liệu xml Thứ hai là điều kiện dùng để định nghĩa nội dung của một thuộc tính hoặc một phần tử thì giới hạn trong DTD Điều thứ ba là DTD không có khả năng mở rộng và hỗ trợ namespace Cuối cùng là do không viết theo định dang XML nên DTD
Trang 6khó viết và khó hiểu Do đó chúng ta sử dụng lược đồ XML-Schemal XML Defintion(XSD)
Lược đồ XML(Schema XML)
Một lược đồ đơn giản chỉ là một tập những luật được định nghĩa lại để
mô tả nội dung dữ liệu xml Nó tương tự như một định nghĩa một tài liệu XML, những phần tư của nó, nhữn kiểu của phần tử và những thuộc tính liên quan, và điều quan trọng nhất là mối quan hệ”cha-con” giữa những phần tử
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<xsd:annotation>
<xsd:documentation>Book browing Transaction schema</xsd:documentation>
</xsd:annotation>
<xsd:element name="Transaction" type="TransactionType"/>
<xsd:complexType name="TransactionType">
<xsd:element name="Lender" type="address"/>
<xsd:element name="Brower" type="address"/>
<xsd:element ref="note" minOccurs="0"/>
<xsd:element name="books" type="books"/>
<xsd:attribute name="borrowDate" type="xsd:date"/>
</xsd:complexType>
<xsd:element name="note" type="xsd:string"/>
<xsd:complexType name="address">
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
Trang 7<xsd:attribute name="phone" type="xsd:string" use="optional"/
>
</xsd:complexType>
<xsd:complexType name="books">
<xsd:element name="book" minOccurs="0" maxOccurs="10">
<xsd:complexType>
<xsd:element name="booktitle" type="xsd:string"/>
<xsd:element name="pubdate" type="xsd:string"
monOccurs="0"/>
<xsd:element name="maxDaysout">
<xsd:simpleType base="xsd:integer">
<xsd:maxExclusive value="14"/>
</xsd:simpleType>
</xsd:element>
<xsd:attribute name="bookID" type="CatalogID"/>
</xsd:complexType>
</xsd:element>
</xsd:complexType>
<xsd:simpleType name="CatalogID" base="xsd:string">
<xsd:pattern value="\d{3}-\d{4}\d{3}"/>
</xsd:simpleType>
</xsd:schema>
1.1.6 Các kiểu dữ liệu trong XML
Khi tập tin XML hoạt động như một cơ sở dữ liệu, và XSL, Xpath được sử dụng để truy vấn trên tập tin XML giống như một số ngôn ngữ truy vấn trong SQL, thì lúc này chúng ta cần biết được vị trí của từng phần tử trong tập tin XML được khai báo ở đâu và với kiểu dữ liệu như thê nào Vì trong bất kỳ cơ sở
Trang 8dữ liệu quan hệ nào, ví dụ như SQL hoặc Oracle, tất cả những cột đều được định nghĩa kiểu dữ liệu, và vì vậy thật sự cần thiết phải có kiểu dữ liệu trong lược đồ XML
Có hai loại kiểu dữ liệu trong lược đồ XML đó là kiều dữ liệu cơ bản và kiểu
dữ liệu mơ rộng Khi kiểu dữ liệu không bắt nguồn từ kiểu dữ liệu nào ví dụ như float Kiều dữ liệu mở rộng dựa trên những kiêu dữ liệu khác như interger dựa trên kiểu decimal
Kiểu dữ liệu cơ bản được định nghĩa cho mục đích của lược đồ XML thì không nhất thiêt phải giống với một số cơ sở dữ liệu khác, sau đây là dánh sách các kiểu dữ liệu XML.
Long Int
2.1.7 Sử dụng mô hình Dom
Trang 9Một cây được tạo thành từ nhiều nút Và một nút cũng là một cây chứa những nút khác Nút lá thì không có nút con, vì thế nút này dung để hiển thị dữ liệu văn bản
Lớp XmlDataDocument kế thừa từ lớp XmlDocument, vì thế nó cũng có một số phương thức như XmlDocument Điều thú vị nhất của
XmlDataDocument là nó cung cấp hai cách nhìn trên cũng một dữ liệu đó là
XML view và relational view
XmlDataDocument có một thuộc tính tên là DataSet, thong qua DataSet, XmlDataDocument trình bày dữ liệu như một hoặc nhiều bảng (DataTable) có
quan hệ hoặc không có quan hệ Khi chúng ta có thể xem nó như một cây hoặc như một bảng (hoặc nhiều bảng)
Sau đây là đoạn code sử dụng Dom:
<?php
//Creates XML string and XML document using the DOM
$dom = new DomDocument('1.0');
//add root - <books>
$books = $dom->appendChild($dom->createElement('books'));
//add <book> element to <books>
$book = $books->appendChild($dom->createElement('book'));
//add <title> element to <book>
$title = $book->appendChild($dom->createElement('title'));
//add <title> text node element to <title>
$title->appendChild(
$dom->createTextNode('Great American Novel'));
Trang 10//generate xml
$dom->formatOutput = true; // set the formatOutput attribute of
// domDocument to true
// save XML as string or file
$test1 = $dom->saveXML(); // put string in test1
$dom->save('test1.xml'); // save as file
?>
1.1.8 Truy vấn dữ liệu XML sử dụng XPathDocument và XPathNavigator
Việc sử dụng lớp XmlDocument và Xml DataDocument để xứ lý tài liệu XML cũng có một số hạn chế Đầu tiên, toàn bộ tài liệu phải được lưu trong cache Thêm vào đó, việc định hướng thông qua một cây sẽ gặp nhiều khó khan, và đinh hướng thông qua những view quan hệ cũng không thuận tiện Để khắc phục vấn đề này, VS.NET cung cấp lớp XPathDocument và
XPathNavigator
Lớp XPDocument cho phép chúng ta xử lý dữ liệu XML mà không phải tải lên toàn bộ cây Và XPathNavigator sử dụng để thao tác các dữ liệu của XPDocument Nó cũng được sử dụng để thao tác trên XmlDocument, qua các nút đã chọn, và làm việc trên những nút đã chọn này Để thực hiên được việc này nó sử dụng biểu thức XPath
XPath chỉ ra cú pháp truy vấn cho việc rút trích dữ liệu từ một tài liệu XML Ý tưởng sử dụng tương tự như trong SQL, tuy nhiên cú pháp của nó thì khác biệt Nói chung cú pháp truy vấn XPath có vẻ phức tạp Tuy nhiên qua các
ví dụ sau, chúng ta có thể thấy được sự ngắn gọn và hiệu quả trong việc rút trích
dữ liệu XML Chi tiết về cú pháp của XPath sẽ không đi sâu trong bài viết này
vì nó thiên về lĩnh vực khác Tuy nhiên chúng ta cũng minh họa vài cách sử dụng biểu thức XPath
Trang 11 Nhận xét
Như vậy chúng ta đã biết được XML là như thế nào và cách sử dụng nó ra sao Và bây giờ câu hỏi đặt ra là tại sao không tổ chức dữ liệu chỉ trên tập tin XML thôi mà lại dung tập tin XML như là một cách lưu trữ hỗ trợ them cho việc lưu trữ trên SQL Server
1.2 Giới thiệu PHP
Bộ tiền xử lý siêu văn bản (PHP- Hypertext Preprocessor) là ngôn ngữ kịch bản lệnh nhiều nền tảng dùng để biên soạn các trang Web động và phần mềm ứng dụng phía máy chủ Nó đã bắt đầu như là Trình thông dịch trang chủ cá nhân / biểu mẫu (PHP/FI - Personal Home Page/Form Interpreter), và đã bắt đầu một cuộc đời mới dưới bàn tay của Suraski và Gutmans, những người đã khởi phóng PHP3 vào tháng 6/1998 Công ty của họ, Zend Technologies, vẫn đang quản lý sự phát triển của PHP
PHP5 phát hành vào tháng 7/2004, được Zend Engine II hỗ trợ và gồm nhiều tính năng mới như:
Hỗ trợ mới cho việc lập trình hướng đối tượng
Hỗ trợ tốt hơn cho MySQL
Hỗ trợ tốt hơn cho XML, điều mà bạn đang quan tâm đến
Mặc dù PHP cung cấp hỗ trợ XML từ các phiên bản đầu tiên, hỗ trợ đó đã cải thiện theo cấp số nhân với việc đưa ra PHP5 Do hỗ trợ của PHP4 cho XML hơi
bị hạn chế, chẳng hạn như chỉ đưa ra một bộ phân tích dựa trên SAX được kích hoạt theo mặc định và DOM của PHP4 không thực hiện tiêu chuẩn W3C, các nhà phát triển PHP XML đã phát minh lại cái bánh xe, có thể nói như vậy, với PHP5 và đã theo đúng các tiêu chuẩn thông dụng
Những cái mới dành cho XML trong PHP5
Trang 12PHP5 bao gồm các mở rộng được viết lại và mới hoàn toàn, gồm bộ phân tích SAX, DOM, SimpleXML, XMLReader, XMLWriter, và bộ xử lý XSLT Tất cả các phần mở rộng này hiện nay đều dựa trên libxml2
Cùng với sự hỗ trợ SAX được cải thiện từ PHP4, PHP5 cũng hỗ trợ cả DOM theo chuẩn W3C và cả phần mở rộng SimpleXML SAX, DOM, và SimpleXML tất cả đều được kích hoạt theo mặc định Nếu bạn đã quen thuộc với DOM từ các ngôn ngữ khác, bạn sẽ viết mã dễ dàng với các chức năng tương tự trong PHP hơn trước đây
Đọc, thao tác và viết XML bằng PHP5
SimpleXML, kết hợp với DOM khi cần thiết, là sự lựa chọn lý tưởng cho các nhà phát triển làm việc với các tài liệu XML tương đối nhỏ không phức tạp, có thể đoán trước được để đọc, thao tác và viết XML bằng PHP5
Các API khởi động nhanh đáng để lựa chọn
Trong số nhiều API sẵn có trong PHP5, DOM và SimpleXML là thứ quen thuộc nhất, trong trường hợp của DOM, và thứ dễ mã hoá nhất, trong trường hợp của SimpleXML Và đối với các tình huống càng phổ biến nhất, như các tình huống mà bạn đang xử lý ở đây, nó càng hoạt động tốt nhất
Mô hình đối tượng tài liệu (DOM) là một bộ chuẩn W3C của các đối tượng để biểu diễn các tài liệu HTML và XML, một mô hình chuẩn về cách bạn có thể kết hợp các đối tượng này, và một giao diện chuẩn để truy cập và thao tác chúng Nhiều nhà cung cấp hỗ trợ DOM như là một giao diện cho các cấu trúc dữ liệu độc quyền và API của họ, mang lại cho mô hình DOM nhiều quyền lực với các nhà phát triển do tính quen thuộc của nó DOM dễ hiểu và dễ sử dụng do cấu trúc của nó trong bộ nhớ giống như tài liệu XML gốc Để chuyển thông tin cho ứng dụng, DOM tạo ra một cây các đối tượng mà sao lại chính xác cây các phần
tử từ tệp tin XML, với phần tử XML nào cũng là một nút của cây DOM là một
bộ phân tích cú pháp dựa trên cây Do DOM xây dựng nên một cây của toàn bộ tài liệu, nó sử dụng nhiều bộ nhớ và thời gian xử lý Do đó, các vấn đề về hiệu