[School] Bài tập về DTC, Schema, DOM trong XML
Đề bài: Một chương trình quản lý thông tin sinh viên và quá trình mượn tả sách của 1 thư viện lưu các TT sau: Thông tin về SV gồm: Mã SV, Họ tên, lớp và Năm sinh. Thông tin mượn sách của sinh viên bao gồm các thông tin về những cuốn sách, ngày mượn, ngày trả. Mỗi cuốn sách mà sv mượn bao gồm: Mã sách, tên sách, NXB, Năm XB. Mỗi sinh viên có thẻ mượn nhiều cuốn sách khác nhau.
1. Định nghĩa XMl Schema với các yêu cầu:
- Mã SV, mã sách bao gồm 4 ký tự trong đó có 2 ký tự đầu là chữ, 2 ký tự sau là số
- Lớp của sv là một trong những giá trị cuat tập hợp các lớp: CMPM1, CNPm2, CNPM3
- Tông tin về cuốn sách xuất hiện theo thứ tự mã sách, tên sách, nhà XB, năm XB
2. Vẽ mô hình DOM
3. Sử dụng cá dối tượng XMLDOM duyệt qua toàn bộ cấu trúc cây và hiển thị thông tin sinh viên thứ 5 và thông tin mượn trả của sinh viên đó
Giải:
Định nghĩa XML Schema
<?xml version = "1.0"?> <xs:schema xmlnx:xs = "www.w3.org/2001/XMLSchema"> <!-- The goc thu vien gom cac phan tu QLMuon--> <xs:element name = "ThuVien"> <xs:complexType> <xs:element name = "QLMuon" type = "KQLMuon"/> </xs:complexType> </xs:element> <!-- Thong tin gom Thong tin sinh vien va thong tin muon--> <xs:complexType name = "KQLMuon" minOccurs = "0"> <xs:element name = "SinhVien" type = "KSinhVien"/> <xs:element name = "Muon" type = "KMuon"/> </xs:complexType> <!-- Dinh nghia kieu sinh vien --> <xs:complexType name = "KSinhVien"> <xs:sequense> <xs:element name = "MaSV" type = "KMa"/> <xs:element name = "Hoten" type = "xs:string"/> <!-- dinh nghia kieu lop--> <xs:element name = "Lop"> <xs:simpleType> <xs:restriction base = "xs:string"/> <xs:pattern value = "CNPM1|CNPM2|CNPM3"/> </xs:simpleType> </xs:element> <!---ket thuc Lop--> <xs:element name = "NamSinh" type = "xs:date"> </xs:sequense> </xs:complexType> <!-- Dinh nghia kieu muon--> <xs:complexType name = "KMuon" minOccurs = "0"> <xs:sequense> <xs:element name = "Sach" type = "KSach"/> <xs:element name = "NgayMuon" type = "xs:date"/> <xs:element name = "NgayTra" type = "xs:date"/> </xs:sequense> </xs:complexType> <!-- Dinh nghia kieu Sach--> <xs:complexType name = "KSach"> <xs:sequense> <xs:element name = "MaSach" type = "KMa"/> <xs:element name = "TenSach" type = "xs:string"/> <xs:element name = "NXB" type = "xs:string"/> <xs:element name = "NamXB" type = "xs:Year"/> </xs:sequense> </xs:complexType> <!-- Dinh nghia Ma sach va Ma sinh vien--> <xs:simplexType name = "KMa"> <xs:restriction base = "xs:string"/> <xs:pattern value = "[a-zA-Z]{2}[0-9]{2}"> </xs:simplexType> </xs:schema>
Sơ đồ DOM
Thực ra thì các bạn chỉ cần chuyển cấu trúc bên trên về dạng cây là xong.
Duyệt và in ra thông tin SV mượn thứ 5
Để duyệt và in ra thông tin ta cần dùng C#, Java, JavaScript, … Ở đây mình dùng JavaScrip.
<srcipt language = "JavaScript"> function read(){ var i, xmlDoc, QLMuonNode, ttSV, ttMuon, ttSach, output; xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.load("thuvien.xml"); // lay thong tin sinh vien muon sach thu 5 QLMuonNode = xmldoc.getElementsByTagName("QLMuon")[4]; // lay toan bo cac node con cua SinhVien ttSV = QLMuonNode.firstChild.childNodes; for (i = 0; i < ttSV.length; i++){ output += ttSV[i].nodeName + ":" + ttSV[i].nodeValue + <br/> } // lay toan bo cac node con cua Muon ttMuon = QLMuonNode.lastChild.childNodes; for (i = 1; i < ttMuon.length; i++){ output += ttMuon[i].nodeName + ":" + ttMuon[i].nodeValue + <br/> } // lay toan bo cac node con cua Sach, Sach nam tai node[0] cua ttMuon ttSach = ttMuon[0].childNodes; for (i = 0; i < ttSach.length; i++){ output += ttSach[i].nodeName + ":" + ttSach[i].nodeValue + <br/> } // hien thi thong tin document.write(output); } </srcipt>
Rất cám ơn Thầy đã đăng những bài học trước đây.
E nhờ Thầy giải hộ Bài giảng tiếp theo:
Một chương trình quản lý thông tin SV, điểm các môn học mà họ đăng ký lưu các thồn tin sau:
-SV gồm có mã số SV, lớp.
-Mỗi môn học mà SV đăng ký học gồm có thông tin Mã môn học, tên môn học, Số tín chỉ với mỗi môn học mà SV đăng ký học thì sẽ có kết quả cuối kỳ chính là Điểm thi mà SV đặt được trong môn đó.
Yêu càu: định nghĩa lược đồ XML Schema với yêu cầu như sau:
-MSSV là một chuỗi các ký tự số 7 ký tự.
– Lớp của SV là một trong những giá trị của tập hợp gồm các lớp CNTTK6, CNTTK7, CNTTK8, CNTTK9.
-Mỗi môn học là một chuỗi 4 ký tự hai ký tự đầu là chữ cái hai ký tự sau là số.
-Số tín chỉ của môn học >=1 và =0 và <10.