這篇文章將為大家詳細(xì)講解有關(guān)Schema驗(yàn)證XML概念的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),寧晉網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:寧晉等地區(qū)。寧晉做網(wǎng)站價(jià)格咨詢:18982081108
1.Schema 文件的結(jié)構(gòu)
Schema文件和其它XML文件的樣子非常相似,它是由一組元素構(gòu)成的,其根元素是“Schema”?!癝chema”元素是XML Schema中第一個(gè)出現(xiàn)的元素,用于表明該XML文檔是一個(gè)Schema文檔,相應(yīng)的,“Schema”的結(jié)束標(biāo)記一般在文檔的末尾。這樣,一個(gè)Schema的結(jié)構(gòu)如下:
Schema具有兩個(gè)屬性:name指定該Schema的名稱,而xmlns則指定該Schema包含的命名空間。注意,一個(gè)XML Schema文檔中可以包含多個(gè)命名空間,比如下面的語句指定了三個(gè)命名空間:
第一個(gè)是xmlns="urn:schemas-microsoft-com:xml-data",它指定本文檔是一個(gè)XML Schema文檔;第二個(gè)是xmlns:dt="urn:schemas-microsoft-com:datatypes",它定義了在本文檔中可以使用的數(shù)據(jù)類型;第三個(gè)是xmlns:myNS="http://www.xml_step_by_step.edu\ns.xml",它表明下面可能會(huì)用到在myNS中定義的元素或?qū)傩浴?br/>2.用Schema定義元素及其內(nèi)容
在講述Schema中和ETD定義相對應(yīng)的種種定義方法之前,我們先來看看所涉及的三個(gè)Schema元素:ElementType、element、group。
1.ElementType元素
在Schema文檔中使用ElementType來聲明XML文件中會(huì)出現(xiàn)的元素,ElementType的語法表達(dá)如下:
在ElementType的幾個(gè)屬性中,name的含義不言而喻,是所聲明元素的名稱,它是不可缺少的。content是ElementType的一個(gè)重要屬性,它指明ElementType所聲明的元素是否為空、是否包含文本、是否包含子元素、還是既包含文本又包含子元素。dt:type指定該元素的數(shù)據(jù)類型。order指定該元素的子元素的排列順序規(guī)則。最后,model指定該元素是否可以包含未在本Schema中定義的元素和屬性,它主要用于其它Schema的引入,也就是其它“命名空間”的引入?!懊臻g”的概念大家可能還比較生疏,現(xiàn)在你只要了解,在一個(gè)XML文件中能夠同時(shí)使用幾個(gè)不同的DTD或Schema定義。
下表列出了model可能的取值:
取 值 | 釋 意 |
open | 表明該元素可以包含其它未在XML Schema中定義的元素和屬性 |
closed | 表明該元素只能包含在本XML Schema中定義過的元素和屬性 |
缺省狀態(tài)下,XML Schema的model取值"open",也就是說,該元素可以包含其它未在XML Schema中定義的元素和屬性。但是,這并不意味著任何元素和屬性都可在Schema中出現(xiàn),允許出現(xiàn)的前提是這些"異類"元素和屬性必須在單獨(dú)的XML Schema中加以定義,并且必須在引用的它們的元素中以命名空間形式指定其出處。
2. element元素
ElementType只是起到聲明元素的作用,至于元素的內(nèi)容究竟是什么,則要靠它的子元素element來說明。element的語法表達(dá)如下:
element實(shí)際上是對該Schema中ElementType聲明的引用,而具體引用什么元素類型,就要靠type屬性指定了。type屬性不可缺少,并且為了保證type指定的是已經(jīng)聲明過的元素,要求它的取值必須同某個(gè)ElementType中的name屬性嚴(yán)格一致。至于其它兩個(gè)屬性倒是可有可無。minOccurs指定該元素在其父元素中出現(xiàn)的最小次數(shù),缺省值為1,表明該元素至少出現(xiàn)一次;也可以取值為0,表明該元素是可選的,可以不出現(xiàn)。maxOccurs則指定了該元素出現(xiàn)的最大次數(shù),缺省值同樣為1,表明該元素至多出現(xiàn)一次;也可取值為“*”,表明該元素在XML實(shí)例文檔中出現(xiàn)次數(shù)不受限制。
3.group元素
DTD中有成組的概念,相應(yīng)的,Schema中也有“group”元素。它的語法表達(dá)類似element元素:
4.用Schema定義元素屬性
Schema中用來定義屬性的元素有兩個(gè),AttributeType元素是聲明屬性的,attribute元素則是說明一個(gè)元素中究竟包含那些屬性。
AttributeType元素
AttributeType元素也是Schema中的重要元素之一,用于定義該Schema文檔中出現(xiàn)的屬性類型。AttributeType的語法表達(dá)如下:
name="屬性名" dt:type="屬性類型" dt:values="枚舉值列表" default="缺省值" required="{yes | no}" >
name
name不言而喻,自然是所聲明的屬性類型的名稱。注意,該屬性是必須的。
dt:type
dt:type指定所聲明屬性的數(shù)據(jù)類型,它除了支持DTD中包含的全部十大數(shù)據(jù)類型外,還支持一些擴(kuò)展屬性。Schema中的十個(gè)基本屬性與DTD中屬性的對應(yīng)關(guān)系請見下表:
Schema中基本類型 | DTD中數(shù)據(jù)類型 |
---|---|
string | #PCDATA |
enumeration | ENUMERATED |
id | ID |
idref | IDREF |
idrefs | IDREFS |
nmtoken | NMTOKEN |
nmtokens | NMTOKENS |
entity | ENTITY |
entities | EMTITIES |
notation | NOTATION |
3.dt:value
dt:value只有當(dāng)dt:type取值"enumeration"時(shí)才有效,此時(shí),dt:value需列出所有可能的取值。
4.default
default指定該屬性類型的缺省取值。default取值必須是有效的,例如,當(dāng)dt:type取值"enumeration"時(shí),default的取值必須來自dt:value所列出的值。
5.required
required指定該屬性對于引用它的元素是否是必須的。取值yes表明是必須的,取值no則表明并非必須。
6.attribute元素
AttributeType和attribute的關(guān)系與ElementType和element的關(guān)系相同,AttributeType只是起到聲明屬性的作用,而真正指明一個(gè)元素具有哪些屬性還需依靠attribute元素。
關(guān)于“Schema驗(yàn)證XML概念的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。