XML綜合案例(課程設(shè)計)
嘿嘿,代碼文件被本人誤刪了,全是當時的截圖,可能有點難受,綜合使用XML內(nèi)容的各類知識,僅供參考。
1. 課程設(shè)計
課程設(shè)計要求
- 1.選取某一場景,描述該場景下的實體、實體屬性以及實體之間的關(guān)系;注意選取實體最好體現(xiàn)出分解層次,以便于呈現(xiàn)XML,XML本身遵循層次數(shù)據(jù)模型;該部分文本描述要詳盡,并用表格呈現(xiàn)出來。
- 2.采用XML對上述實體、實體屬性及關(guān)系進行描述,要求體現(xiàn)出系統(tǒng)預定義實體,保證XML語法正確。
- 3.依據(jù)實例化XML文檔寫出組織模板文件DTD和SCHEMA,要求DTD與SCHEMA要保持映射,同時證明XML文件為有效的文檔,同時組織模板要具有較高的抽象層次和較寬泛的約束能力。
- 4.提出4個查詢題設(shè),要求至少兩個要結(jié)合XPATH標準函數(shù),寫出XPATH求解路徑。
- 5.利用XSLT顯示模板將XML文件展示為表格,與1一致。
- 6.利用JAVA或PYTHON或者JavaScript等工具對XML文件節(jié)點進行屬性值讀寫操作。
1. 場景選取
以華中師范大學南湖圖書館為例,一個圖書館擁有一個館長和多個圖書管理員,一個圖書館有多個借閱者,借閱者可以是學生和老師,一個借閱者可以借閱多本圖書,一本圖書在不同時間點也可以由多個借閱者進行借閱。
1.1. 圖書館層次數(shù)據(jù)結(jié)構(gòu)模型

image.png
1.2. 使用Excel展示其結(jié)構(gòu)

image.png
2.3.EXCEL展示最終xslt轉(zhuǎn)換的結(jié)構(gòu)

image.png
2.4.涉及實體相關(guān)分析
2.4.1.實體
該模型所涉及的實體主要有圖書館、圖書、借閱者、管理員、借閱情況。
** 湊合看看,本人截圖搞的**

image.png

image.png
3.XML文檔編寫
3.1.XML-Text視圖

image.png

image.png

image.png
3.2.XML-Browser視圖
表 10**** 頂層結(jié)構(gòu)

image.png
表 11**** 二級結(jié)構(gòu)

image.png
表 12**** 三層結(jié)構(gòu)

image.png
表 13**** 四層結(jié)構(gòu)

image.png
表 14**** Browser視圖下的xml文件

image.png
3.3.XML-Grid視圖
-
Grid視圖下的xml文件
image.png -
頂層grid視圖
image.png -
二級Grid視圖
image.png -
三級Grid視圖
image.png
4.DTD文檔編寫
4.1.結(jié)構(gòu)分析
【1】由2.3涉及實體相關(guān)分析可以知道元素之間的隸屬關(guān)系和各個節(jié)點內(nèi)容的數(shù)據(jù)類型,這里對數(shù)據(jù)類型為枚舉類型的數(shù)據(jù)進行枚舉值的列出:

image.png
4.2.DTD文檔編寫

DTD文檔.png

DTD良好性驗證.png

dtd和XML驗證格式良好
5.Schema文檔編寫
5.1.SCHEMA 文件

image.png

image.png

image.png

image.png

image.png

image.png
5.2.使用 SCHEMA進行語法約束的XML文檔通過有效性檢驗

image.png
6.XPATH
(1)找出所有借書的學生節(jié)點:
相對路徑:/Liburary/Borrower/Student
絕對路徑:/child::Liburary/child::Borrower/child::Student

image.png
(2)找出Borrower中的所有子節(jié)點:/Liburary/Borrower/node()

image.png
(3)找出admin的所有子節(jié)點:/Liburary/Admin/*
(4)找出借閱者的所有子孫節(jié)點:

image.png
(6)找出第一個借書的學生的姓名:
/child::Liburary/child::Borrower/child::Student[1]/sname/text()

image.png

image.png
(7)找出第一個學生借的名字中含有“Vue”的書本名稱:/Liburary/Borrower/Student[1]/BookBorrowing/BorrowingBooks/Book/bname[contains(text(),"Vue")]

image.png
(8)找出所有書的價格:

image.png
(9)找出所有老師所借閱的價格大于100和老師所借閱的價格大于30的書籍:
/Liburary/Borrower//Teacher/BookBorrowing/BorrowingBooks/Book[price>100]/bname/text()|//Student/BookBorrowing/BorrowingBooks/Book[price>50]/bname/text()

image.png
(10)尋找倒數(shù)第一的老師節(jié)點
/Liburary/Borrower/Teacher[position()=last()]

image.png
(11)尋找倒數(shù)第二的學生節(jié)點:/Liburary/Borrower/Student[position()=last()-1]

image.png
(1)尋找學號中有1,2或者名字中有佳字的學生

image.png
7.XSLT轉(zhuǎn)換
7.1.XSLT文件

image.png

image.png

image.png

image.png
7.2.轉(zhuǎn)化的XML文件

image.png

image.png

image.png
7.3.在瀏覽器中瀏覽

image.png
8.XML解析——使用JavaScript
8.1.代碼文檔

image.png

image.png

image.png

image.png

image.png
8.2.將xml文檔和HTML文件部署到本地服務器上

image.png
8.3.解析結(jié)果在瀏覽器中顯示

image.png

image.png

image.png



