免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Schema和DTD的區(qū)別,驗(yàn)證XLM數(shù)據(jù)合法性...
DTD
DTD不遵守XML語(yǔ)法
DTD不可擴(kuò)展
DTD不支持命名空間的應(yīng)用
DTD沒(méi)有提供強(qiáng)大的數(shù)據(jù)類(lèi)型支持,只能表示很簡(jiǎn)單的數(shù)據(jù)類(lèi)型
Schema
Schema完全基于XML語(yǔ)法
能用處理XML文檔的工具處理
大大擴(kuò)充了數(shù)據(jù)類(lèi)型
支持原型,也就是元素的繼承
支持屬性組
開(kāi)放性,可以多個(gè)Schema運(yùn)用于一個(gè)XML文檔
1、XML的合法性驗(yàn)證
應(yīng)用XML技術(shù)的一個(gè)主要目標(biāo)是為了方便信息交換。很顯然,只有XML文檔的格式或是結(jié)構(gòu)得到交互各方的一致認(rèn)可,這個(gè)目標(biāo)才有可能實(shí)現(xiàn)。XML Schema(大綱)和DTD就是描述信息結(jié)構(gòu)的模型,可以用來(lái)對(duì)XML文檔內(nèi)容的合法性進(jìn)行驗(yàn)證。
Schema和DTD規(guī)定了在文檔中能夠使用的元素和屬性,以及這些對(duì)象與文本內(nèi)容的可能組合形式。作為對(duì)文檔驗(yàn)證的標(biāo)準(zhǔn),Schema和DTD不僅應(yīng)該能被人們理解,對(duì)應(yīng)用程序來(lái)說(shuō)也應(yīng)當(dāng)是易于理解的。對(duì)文檔合法性的驗(yàn)證包括兩個(gè)方面:一方面是語(yǔ)法結(jié)構(gòu)的驗(yàn)證,即元素類(lèi)型、元素嵌套格式、屬性類(lèi)型、屬性值數(shù)據(jù)類(lèi)型、屬性值是否可選等相關(guān)文檔對(duì)象單元本身及其結(jié)構(gòu)的合法性;另一方面是語(yǔ)義的驗(yàn)證,只有真正理解了XML文檔的含義才能算是實(shí)現(xiàn)了信息交互,否則僅是結(jié)構(gòu)上正確但意義模糊的信息,對(duì)于接收方來(lái)說(shuō)一樣是無(wú)用的,有時(shí)甚至?xí)a(chǎn)生誤解,起到相反的作用。
對(duì)XML文檔的驗(yàn)證有如下幾個(gè)步驟:
1.定義一份XML Schema或DTD: Schema或DTD為同一類(lèi)型的所有文檔定義了結(jié)構(gòu)標(biāo)準(zhǔn),比如有關(guān)書(shū)籍信息的文檔可共享一份標(biāo)準(zhǔn)。
2.應(yīng)用Schema或DTD:一般由文檔的作者指定Schema,這樣接收方可以很快地根據(jù)說(shuō)明對(duì)文檔進(jìn)行驗(yàn)證。但在C/S(客戶機(jī)/服務(wù)器)環(huán)境中,由于服務(wù)器無(wú)法判斷XML在客戶端是否已經(jīng)驗(yàn)證過(guò),所以為了能夠確保驗(yàn)證過(guò)程,也為了避免可能的重復(fù)驗(yàn)證,對(duì)文檔應(yīng)用Schema或DTD的操作由服務(wù)器完成。
3.運(yùn)行解析器進(jìn)行驗(yàn)證:解析器在裝載文檔的同時(shí)掃描結(jié)構(gòu),遇到任何錯(cuò)誤都會(huì)終止裝載過(guò)程,并做出適當(dāng)?shù)捻憫?yīng)。
2、Schema和DTD的區(qū)別
雖然,XML Schema和DTD都是用于文檔驗(yàn)證,但二者還是有一定的區(qū)別,其中前者更為精確和靈活:
● XML Schema是一種內(nèi)容“開(kāi)放”的模型,可擴(kuò)展、功能強(qiáng),而DTD是內(nèi)容“封閉”的模型,可擴(kuò)展性差;
● XML Schema支持豐富的數(shù)據(jù)類(lèi)型,完全能夠滿足網(wǎng)絡(luò)應(yīng)用特別是電子商務(wù)的需求,而DTD不支持元素的數(shù)據(jù)類(lèi)型,對(duì)于屬性的類(lèi)型定義也很有限;
● XML Schema支持名稱(chēng)空間機(jī)制,DTD不支持;
● XML Schema可以針對(duì)不同情況分別對(duì)整個(gè)XML文檔或者是文檔局部進(jìn)行驗(yàn)證,而DTD缺乏這種靈活性;
● XML Schema的語(yǔ)法完全遵循XML規(guī)范,可以和DOM技術(shù)結(jié)合使用,功能強(qiáng)大,而DTD語(yǔ)法自成一體,比較難以學(xué)習(xí)。
所以,Schema很有可能取代DTD成為驗(yàn)證XML文檔合法性的新標(biāo)準(zhǔn)。
 
3、Schema的基本元素
Schema共有8種元素:<Schema>、<ElementType>、<element>、<group>、<AttributeType>、<attribute>、<datatype>和<description>。這些元素對(duì)XML中允許的語(yǔ)法和結(jié)構(gòu)進(jìn)行了定義。注意:必須在使用Schema前對(duì)這些元素進(jìn)行定義。
1.<Schema>元素
Schema文件與其他的XML文檔結(jié)構(gòu)非常相似,根元素為<Schema>,表明文檔類(lèi)型:
<?xml version=“1.0”?>
<Schema name=“mySchema”
xmlns=“urn:schemas-microsoft-com:xml-data”
xmlns:dt=“urn:schemas-microsoft-com:datatypes”>
</Schema>
其中屬性name指定Schema名稱(chēng),xmlns指定所屬名稱(chēng)空間。第一個(gè)xmlns指定全文的缺省名稱(chēng)空間,第二個(gè)定義了文檔中可使用的數(shù)據(jù)類(lèi)型的名稱(chēng)空間。
在XML中引用Schema的方法是在XML文檔的根元素中使用名稱(chēng)空間指明Schema文件的URL地址,在URL前要加上“x-schema”前綴:
<?xml version=“1.0”?>
<myElement xmlns=“x-schema:http://mysite.com/myschema.xml”>
</myElement>
如果是在XML文檔中的某一個(gè)元素中使用xmlns引用Schema,就是對(duì)文檔進(jìn)行局部合法性驗(yàn)證。
2.<ElementType>元素
<ElementType>元素用來(lái)聲明XML文檔中使用的新元素:
<ElementType
name = “element tag name”
content = “empty”|“textOnly”|“eltOnly”|“mixed”
model = “open” | “closed”
order = “one” | “seq” | “many”
dt:type = “XML data type” >
</ElementType>
Content屬性規(guī)定聲明的元素是否為空,是否包含文本或子元素,還是兩者都有;order指定子元素的排列順序; model規(guī)定了元素中是否可以包含未在Schema中定義的元素或?qū)傩? dt: type則指定了元素的數(shù)據(jù)類(lèi)型。
3.<element>元素
<element>元素是對(duì)<ElementType>聲明的元素的內(nèi)容進(jìn)行定義,說(shuō)明在指定的元素類(lèi)型中允許使用哪些子元素:
<element
type = “declared element type”
minOccurs = “0” | “1”
maxOccurs = “1” | “*” />
Type屬性是必要的,同時(shí)要與〈ElementType〉中的name屬性完全一致。minOccurs和maxOccurs屬性分別指定了元素出現(xiàn)的最少和最多次數(shù),默認(rèn)值都為1。minOccurs為0說(shuō)明元素是可選的,maxOccurs為*說(shuō)明元素出現(xiàn)的次數(shù)不受限制。
4.<group>元素
<group>元素也出現(xiàn)在<ElementType>中,表達(dá)元素成組的概念。組里的對(duì)象可以是元素也可以是另一個(gè)子組。order屬性制定組中元素的順序:
<ElementType name=“...” >
<group minOccurs = “0” | “1”
maxOccurs = “1” | “*”
order = “one” | “seq” | “many” >
<element type=“……” />
</group>
</ElementType>
5.<AttributeType>元素
<AttributeType>元素定義了Schema中使用的屬性類(lèi)型。根據(jù)出現(xiàn)位置不同,其作用范圍也不一樣。如果是在<ElementType>元素中定義,那么所定義的屬性類(lèi)型就只能作用在該元素類(lèi)型上; 如果定義在外部,那么文檔中所有的元素類(lèi)型就都可以使用該屬性。
<AttributeType
name = “attribute name”
dt:type = “XML data type”
required = “yes” | “no”
dt:values = “enumerated list of values”
default = “default value” >
</AttributeType>
Name是屬性類(lèi)型名稱(chēng); dt:type同<ElementType>元素中的用法一樣 ;required指定該屬性對(duì)于引用它的元素是否是必要的;dt:values只有當(dāng)dt:type是“enumeration”時(shí)才有效,此時(shí)它列舉屬性的所有可能取值; default指定屬性類(lèi)型的缺省值,并且一定是有效值,比如屬性類(lèi)型是枚舉型時(shí),default取值一定是dt:values所列舉值中的一個(gè)。
6.<attribute>元素
<attribute>元素對(duì)<AttributeType>聲明的屬性進(jìn)行具體的定義:
<attribute
type = “declared attribute type”
required = “yes” | “no”
default = “default value” />
type屬性唯一指定了引用的屬性類(lèi)型,取值要與<AttributeType>中的name屬性完全一致; required說(shuō)明該屬性對(duì)于引用它的元素是否為必要的; default指定屬性類(lèi)型的缺省值。如果對(duì)同一屬性的<AttributeType>和<attribute>中相對(duì)應(yīng)的default和required屬性都給出了定義,那么<attribute>的優(yōu)先級(jí)別更高,以它的取值為準(zhǔn)。
其他兩個(gè)元素<datatype>和<description>分別定義了Schema元素的數(shù)據(jù)類(lèi)型和為元素提供的說(shuō)明資料,用法簡(jiǎn)單,本文不再一一舉例說(shuō)明。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
XML簡(jiǎn)明教程(中國(guó)XML聯(lián)盟版)
XML認(rèn)證教程,第 6 部分: XML Schema
XML的校驗(yàn)方式
XML Schema 是什么
XML 文件:XML 架構(gòu)快速指南 - MSDN Magazine,2002年4月
XMLSchema 詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服