01/10/2018, 22:30

[School] Bài tập đặc tả cấu trúc DTD, Schema trong XML

[School] Bài tập đặc tả cấu trúc DTD, Schema trong XML Tháng Mười Hai 8, 2014 nguyenvanquan7826 Z- Thể loại khác 10 responses Bài viết này giải bài tập về đặc tả cấu trúc với DTD và XMLSchema trong phạm vi “Bài tập” ...

[School] Bài tập đặc tả cấu trúc DTD, Schema trong XML

Bài viết này giải bài tập về đặc tả cấu trúc với DTD và XMLSchema trong phạm vi “Bài tập” của mình, các bạn có thể tham khảo.

Đề bài: Cho phiếu điểm của 1 sinh viên gồm: Họ và tên, lớp, địa chỉ, giới tính, ngày sinh và một bảng điểm, mỗi bản ghi của bảng gồm: STT, Tên môn, điểm học kỳ 1, điểm học kỳ 2, điểm TB cả năm. Hãy đặc cả nội dung và cấu trúc (theo DTD hoặc XMLSchema) của tài liệu XML tương ứng với phiếu điểm này.

Giải:
* Đặc tả nội dung: Chính là viết tài liệu XML chứa nội dung của phiếu điểm trên. Trong đó có thể sử dụng tham chiếu đặc tả cấu trúc theo DTD hoặc XMLSchema.
Với các thông tin trên phiếu điểm chúng ta có thể chia ra làm 2 phần chính trong phiếu điểm là thông tin sinh viên (chứa tên, lớp,…) và bảng điểm (chứa điểm các môn học).

Lưu ý: Do đề bài nói “theo DTD hoặc XMLSchema” nên trong bài thì các bạn làm theo 1 trong 2 cái là DTD hoặc XMLSchema thôi nhé, mình làm cả 2, các bạn thích chọn cái nào thì chọn.

<?xml version = "1.0" ?>

 
<!DOCTYPE PhieuDiem SYSTEM "phieudiemhocsinh.dtd">
 

 
<PhieuDiem xmlns = "http://www.w3school.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "phieudiemhocsinh.xsd">
 

<PhieuDiem>
	<SinhVien>
		<HoTen>Nguyen Van Quan</HoTen>
		<Lop>KTPMK10B</Lop>
		<DiaChi>Bac Ninh</DiaChi>
		<GioiTinh>Nam</GioiTinh>
		<NgaySinh>31/12/1992</NgaySinh>
	</SinhVien>
	
	<BangDiem>
		<MonHoc>
			<STT>1</STT>
			<TenMon>XML</TenMon>
			<DienKy1>10</DienKy1>
			<DienKy2>10</DienKy2>
			<DienTB>10</DienTB>
		</MonHoc>
		
		<MonHoc>
			<STT>2</STT>
			<TenMon>Java</TenMon>
			<DienKy1>10</DienKy1>
			<DienKy2>10</DienKy2>
			<DienTB>10</DienTB>
		</MonHoc>
	</BangDiem>
</PhieuDiem>

* Đặc tả cấu trúc DTD tương ứng

<?xml version="1.0"?>
<!DOCTYPE PhieuDiem[
	<!ELEMENT PhieuDiem(SinhVien, BangDiem)>
	
	<!ELEMENT SinhVien(HoTen, Lop, DiaChi, GioiTinh, NgaySinh)>
	<!ELEMENT BangDiem(MonHoc+)>
	
	<!ELEMENT HoTen(#PCDATA)>
	<!ELEMENT Lop(#PCDATA)>
	<!ELEMENT DiaChi(#PCDATA)>
	<!ELEMENT GioiTinh(#PCDATA)>
	<!ELEMENT NgaySinh(#PCDATA)>
	
	<!ELEMENT MonHoc(STT, TenMon, DiemKy1, DiemKy2, DiemTB)>
	<!ELEMENT STT(#PCDATA)>
	<!ELEMENT TenMon(#PCDATA)>
	<!ELEMENT DiemKy1(#PCDATA)>
	<!ELEMENT DiemKy2(#PCDATA)>
	<!ELEMENT DiemTB(#PCDATA)>
]>

* Đặc tả cấu trúc XMLSchema tương ứng

<?xml version = "1.0"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema">
	<xs:element name = "PhieuDiem" type="KPhieuDiem"/>
	
	<xs:complexType name = "KPhieuDiem">
		<xs:sequence>
			<xs:element name = "SinhVien" type = "KSinhVien"/>
			<xs:element name = "BangDiem" type = "KBangDiem"/>
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name = "KieuSinhVien">
		<xs:sequense>
			<xs:element name = "HoTen" type = "xs:string"/>
			<xs:element name = "Lop" type = "xs:string"/>
			<xs:element name = "DiaChi" type = "xs:string"/>
			<xs:element name = "GioiTinh">
				<xs:simpleType>
					<xs:restriction base = "xs:string"/>
					<xs:pattern value = "Nam|Nu"/>
				</xs:simpleType>
			</xs:element>
			<xs:element name = "NgaySinh" type = "xs:date"/>
		</xs:sequense>
	</xs:complexType>
	
	<xs:complexType name = "KBangDiem">
		<xs:element name = "MonHoc" type = "KMonHoc"/>
	</xs:complexType>
	
	<xs:complexType name = "KMonHoc">
		<xs:sequense>
			<xs:element name = "STT" type = "xs:integer"/>
			<xs:element name = "TenMon" type = "xs:string"/>
			<xs:element name = "DiemKy1" type = "KDiem"/>
			<xs:element name = "DiemKy2" type = "KDiem"/>
			<xs:element name = "DiemTB" type = "KDiem"/>
		</xs:sequense>
	</xs:complexType>
	
	<xs:simpleType name = "KDiem">
		<xs:restriction base = "xs:double"/>
		<xs:minExclusive value = "0.0"/>
		<xs:maxExclusive value = "10.0"/>
	</xs:simpleType>
</xs:schema>
0