資源描述:
《xml schema 與 xml dtd的技術(shù)比較與分析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、.XMLSchema與XMLDTD的技術(shù)比較與分析引言XMLDTD(XML的文檔類型定義)是近幾年來(lái)XML技術(shù)領(lǐng)域所使用的最廣泛的一種模式。但是,由于XMLDTD并不能完全滿足XML自動(dòng)化處理的要求,例如不能很好實(shí)現(xiàn)應(yīng)用程序不同模塊間的相互協(xié)調(diào),缺乏對(duì)文檔結(jié)構(gòu)、屬性、數(shù)據(jù)類型等約束的足夠描述等等,所以W3C于2001年5月正式推薦XMLSchema為XML的標(biāo)準(zhǔn)模式。顯然,W3C希望以XMLSchema來(lái)作為XML模式描述語(yǔ)言的主流,并逐漸代替XMLDTD。那么XMLSchema與XMLDTD相比到底有哪些優(yōu)勢(shì)呢,XML
2、DTD是否真的會(huì)在XML的模式描述領(lǐng)域中逐漸消失呢?回頁(yè)首XML模式與XML格式XML模式是指用來(lái)描述XML結(jié)構(gòu)、約束等因素的語(yǔ)言,例如XMLSchema、XMLDTD、XDR,SOX等等。XML格式則是XML文檔本身所具有的格式。本文以XMLSchema來(lái)代表W3C所推薦的XMLSchema模式標(biāo)準(zhǔn),而以"XML模式"來(lái)代表所有的XML模式描述語(yǔ)言。從模式的描述語(yǔ)言來(lái)說(shuō),XMLSchema和XMLDTD都屬于語(yǔ)法模式。與概念模式不同,語(yǔ)法模式在對(duì)同一事物描述時(shí),可以采用不同的語(yǔ)法,例如在對(duì)關(guān)系模式描述時(shí),無(wú)論是使用XM
3、LSchema還是XMLDTD,都既可以用元素也可以用屬性來(lái)描述關(guān)系模式的列。模式必須以某種格式來(lái)表示,XMLSchema的格式與XMLDTD的格式有著非常明顯的區(qū)別,XMLSchema事實(shí)上也是XML的一種應(yīng)用,也就是說(shuō)XMLSchema的格式與XML的格式是完全相同的,而作為SGMLDTD的一個(gè)子集,XMLDTD具有著與XML格式完全不同的格式。這種區(qū)別會(huì)給XMLSchema的使用帶來(lái)許多好處:1XML用戶在使用XMLSchema的時(shí)候,不需要為了理解XMLSchema而重新學(xué)習(xí),節(jié)省了時(shí)間;2由于XMLSchema
4、本身也是一種XML,所以許多的XML編輯工具、API開(kāi)發(fā)包、XML語(yǔ)法分析器可以直接的應(yīng)用到XMLSchema,而不需要修改。3作為XML的一個(gè)應(yīng)用,XMLSchema理所當(dāng)然的繼承了XML的自描述性和可擴(kuò)展性,這使得XMLSchema更具有可讀性和靈活性。4由于格式完全與XML一樣,XMLSchema除了可以像XML一樣處理外,也可以同它所描述的XML文檔以同樣的方式存儲(chǔ)在一起,方便管理。5XMLSchema與XML格式的一致性,使得以XML為數(shù)據(jù)交換的應(yīng)用系統(tǒng)之間,也可以方便的進(jìn)行模式交換。6XML有非常高的合法性要
5、求,XMLDTD對(duì)XML的描述,往往也被用作驗(yàn)證XML合法性的一個(gè)基礎(chǔ),但是XMLDTD本身的合法性卻缺少較好的驗(yàn)證機(jī)制,必需獨(dú)立處理。XMLSchema則不同,它與XML有著同樣的合法性驗(yàn)證機(jī)制。回頁(yè)首數(shù)據(jù)類型或許,對(duì)于許多開(kāi)發(fā)人員來(lái)講,XMLSchema與XMLDTD相比的一個(gè)最顯著的特征,就是其對(duì)數(shù)據(jù)類型的支持了。這完全是因?yàn)閄MLDTD提供的數(shù)據(jù)類型只有CDATA、Enumerated、NMTOKEN、NMTOKENS等十種內(nèi)置(built-in)數(shù)據(jù)類型。這樣少的數(shù)據(jù)類型通常無(wú)法滿足文檔的可理解性和數(shù)據(jù)交換的需
6、要。XMLSchema則不同,它內(nèi)置了三十七種數(shù)據(jù)類型,如long,int,short,double等常用的數(shù)據(jù)類型,并通過(guò)將數(shù)據(jù)類型表示為由valuespace、lexicalspace和facet三部分組成的三元組而獲得更大的靈活性。但是,XMLSchema數(shù)據(jù)類型的真正靈活性來(lái)自于其對(duì)用戶自定義類型的支持。XMLSchema提供兩種方式來(lái)實(shí)現(xiàn)數(shù)據(jù)類型的定義。1)簡(jiǎn)單類型定義(simpleType),即在XMLSchema內(nèi)置的數(shù)據(jù)類型基礎(chǔ)上或其它由XMLSchema內(nèi)置的數(shù)據(jù)類型繼承或定義所得到的簡(jiǎn)單的數(shù)據(jù)類型(s
7、impleType)基礎(chǔ)上,通過(guò)restriction,list或者union方式定義新的數(shù)據(jù)類型。例如:...源碼1restriction方式的定義源碼2list方式的定義源
8、碼3union方式的定義