JS操作XML中DTD介紹及使用方法分析
本文實(shí)例講述了JS操作XML中DTD介紹及使用方法。分享給大家供大家參考,具體如下:
什么是DTD,為什么需要DTD?
DTD為英文Document Type Definition,中文意思為“文檔類(lèi)型定義”。DTD肩負(fù)著兩重任務(wù):一方面它幫助你編寫(xiě)合法的代碼,另一方面它讓瀏覽器正確地顯示器代碼。
一個(gè)HTML文檔的基本結(jié)構(gòu)可分為兩個(gè)主要部分:
<html> <head> 頭部信息 </head> <body> 可視內(nèi)容 </body> </html>
一個(gè)DTD應(yīng)該放在每一個(gè)文檔的第一行(包括空白).這樣正確地放置,你的DTD才能告訴瀏覽器的用的是什么標(biāo)記語(yǔ)言。在通常情況下,如果你編寫(xiě)的是正確代碼,并擁有一個(gè)合適的DTD,瀏覽器將會(huì)根據(jù)W3C的標(biāo)準(zhǔn)顯示你的代碼。
良好的xml文檔:符合x(chóng)ml的語(yǔ)法規(guī)則。
有效的xml文檔:符合x(chóng)ml語(yǔ)法規(guī)則的同時(shí)還需要符合DTD文檔類(lèi)型定義。
有效(Valid)的XML文檔:
首先,XML文檔是個(gè)格式正規(guī)的(Well-formed)XML文檔;
其次,需要滿足DTD的要求,這樣的XML文檔稱為有效的(Valid)XML文檔。
利用DTD可以對(duì)xml文檔的各個(gè)節(jié)點(diǎn)進(jìn)行約束定義,使開(kāi)發(fā)遵循一套“標(biāo)準(zhǔn)”。
DTD可以約束xml文檔出現(xiàn)的元素,元素名稱,元素的先后順序,屬性等。
DTD文檔與XML文檔實(shí)例的關(guān)系
類(lèi)與對(duì)象;
數(shù)據(jù)庫(kù)表結(jié)構(gòu)與數(shù)據(jù)記錄;
有了DTD,每個(gè)XML文件可以攜帶一個(gè)自身格式的描述。
有了DTD,不同組織的人可以使用一個(gè)通用DTD來(lái)交換數(shù)據(jù)。
應(yīng)用程序可以使用一個(gè)標(biāo)準(zhǔn)DTD校驗(yàn)從外部世界接收來(lái)的XML數(shù)據(jù)是否有效。
可以使用DTD校驗(yàn)自己的XML數(shù)據(jù)。
元素的定義
DTD中的修飾符號(hào):
這部分符號(hào)可以聯(lián)系正則表達(dá)式的符號(hào)來(lái)記憶。重點(diǎn)內(nèi)容
如何生成DTD文檔
DTD文檔有三種應(yīng)用形式:
1.內(nèi)部DTD文檔
<!DOCTYPE 根元素[定義內(nèi)容]>
2.外部DTD文檔
<!DOCTYPE 根元素 SYSTEM "DTD文件路徑">
3.內(nèi)外部DTD文檔結(jié)合
<!DOCTYPE 根元素 SYSTEM "DTD文件路徑" [定義內(nèi)容]>
內(nèi)部DTD
一個(gè)內(nèi)部DTD的例子:
上半部分是DTD,下面是XML文檔,文檔要符合DTD。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE poem [ <!ELEMENT poem (author, title, content)> <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT content (#PCDATA)> ]> <!--為元素poem定義了三個(gè)子元素author title content, 這三個(gè)元素必須要出現(xiàn)并且必須按照這個(gè)順序 少元素不行,多元素也不行 --> <!--指明author,title,content里面的內(nèi)容是字符串類(lèi)型--> <poem> <author>王維</author> <title>鹿柴</title> <content>空山不見(jiàn)人,但聞人語(yǔ)聲。返景入深林,復(fù)照青苔上。</content> </poem>
上面的文檔就是格式良好,并且有效的。
#PCDATA(Parsed Character Data) ,可解析的字符數(shù)據(jù),即字符串。
上面部分是DTD,在下面編寫(xiě)XML文檔時(shí),如果不符合其DTD規(guī)范,用XMLSpy做檢查的時(shí)候,是well-formed的,但是卻不是valid的。
比如根元素寫(xiě):
<Students> </Students>
Validate檢查的時(shí)候就會(huì)報(bào)錯(cuò),根元素和DTD中的poem不符。
制作DTD約束校驗(yàn)工具
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Untitled Document</title> <script> var doc = new ActiveXObject("Mircosoft.XMLDOM"); doc.validateOnParse = true; doc.async = false;//同步校驗(yàn) function jiaoyan(){ doc.load("./01.xml");//加載被校驗(yàn)的文檔 var rst = document.getElementById("result"); rst.innerHTML += "錯(cuò)誤信息:" + doc.parseError.reason + "<br />";//校驗(yàn)的錯(cuò)誤信息 rst.innerHTML += "錯(cuò)誤行數(shù):" + doc.parseError.line + "<br />";//出錯(cuò)代碼的行數(shù) rst.innerHTML += "錯(cuò)誤列數(shù):" + doc.parseError.linepos + "<br />";//出錯(cuò)代碼的列數(shù) rst.innerHTML += "錯(cuò)誤代碼:" + doc.parseError.errorCode + "<br />";//出錯(cuò)代碼的編號(hào) } </script> </head> <body> <input type=button value="校驗(yàn)" onclick="jiaoyan()" /> <div id="result"></div> </body> </html>
PS:這里再為大家提供幾款關(guān)于xml操作的在線工具供大家參考使用:
在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson
在線格式化XML/在線壓縮XML:
http://tools.jb51.net/code/xmlformat
XML在線壓縮/格式化工具:
http://tools.jb51.net/code/xml_format_compress
XML代碼在線格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript操作XML文件技巧總結(jié)》、《JavaScript文件與目錄操作技巧匯總》、《JavaScript中ajax操作技巧總結(jié)》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用php檢測(cè)用戶當(dāng)前使用的瀏覽器是否為IE瀏覽器
檢測(cè)用戶當(dāng)前瀏覽器是否為IE瀏覽器,在某些情況下是很有必要的,下面有個(gè)不錯(cuò)的示例,經(jīng)測(cè)試還不錯(cuò),需要的朋友可以參考下2013-12-12PHP實(shí)現(xiàn)websocket通信的方法示例
這篇文章主要介紹了PHP實(shí)現(xiàn)websocket通信的方法,結(jié)合實(shí)例形式分析了php基于websocket類(lèi)的socket通信相關(guān)客戶端與服務(wù)器端操作技巧,需要的朋友可以參考下2018-08-08PHP實(shí)現(xiàn)抓取迅雷VIP賬號(hào)的方法
這篇文章主要介紹了PHP實(shí)現(xiàn)抓取迅雷VIP賬號(hào)的方法,實(shí)例分析了php基于采集類(lèi)Snoopy實(shí)現(xiàn)頁(yè)面抓取及正則匹配的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07