Schema驗證XML概念的示例分析-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Schema驗證XML概念的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司主營圖木舒克網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都APP應(yīng)用開發(fā),圖木舒克h5小程序開發(fā)搭建,圖木舒克網(wǎng)站營銷推廣歡迎圖木舒克等地區(qū)企業(yè)咨詢

1.Schema 文件的結(jié)構(gòu)
Schema文件和其它XML文件的樣子非常相似,它是由一組元素構(gòu)成的,其根元素是“Schema”?!癝chema”元素是XML Schema中第一個出現(xiàn)的元素,用于表明該XML文檔是一個Schema文檔,相應(yīng)的,“Schema”的結(jié)束標(biāo)記一般在文檔的末尾。這樣,一個Schema的結(jié)構(gòu)如下:

<Schema name="schema-name" xmlns="namespace" >

</Schema>

Schema具有兩個屬性:name指定該Schema的名稱,而xmlns則指定該Schema包含的命名空間。注意,一個XML Schema文檔中可以包含多個命名空間,比如下面的語句指定了三個命名空間:

<Schema name="mySchema" 
        xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:myNS=http://www.xml_step_by_step.edu\ns.xml
>

第一個是xmlns="urn:schemas-microsoft-com:xml-data",它指定本文檔是一個XML Schema文檔;第二個是xmlns:dt="urn:schemas-microsoft-com:datatypes",它定義了在本文檔中可以使用的數(shù)據(jù)類型;第三個是xmlns:myNS="http://www.xml_step_by_step.edu\ns.xml",它表明下面可能會用到在myNS中定義的元素或?qū)傩浴?br/>2.用Schema定義元素及其內(nèi)容
在講述Schema中和ETD定義相對應(yīng)的種種定義方法之前,我們先來看看所涉及的三個Schema元素:ElementType、element、group。
    1.ElementType元素
    在Schema文檔中使用ElementType來聲明XML文件中會出現(xiàn)的元素,ElementType的語法表達(dá)如下:

<ElementType 
    name="元素名" 
    content="{ empty | textOnly | eltOnly | mixed }" 
    dt:type="元素類型" 
    order="{ one | seq | many }" 
    model="{ open | closed }" 
>

在ElementType的幾個屬性中,name的含義不言而喻,是所聲明元素的名稱,它是不可缺少的。content是ElementType的一個重要屬性,它指明ElementType所聲明的元素是否為空、是否包含文本、是否包含子元素、還是既包含文本又包含子元素。dt:type指定該元素的數(shù)據(jù)類型。order指定該元素的子元素的排列順序規(guī)則。最后,model指定該元素是否可以包含未在本Schema中定義的元素和屬性,它主要用于其它Schema的引入,也就是其它“命名空間”的引入。“命名空間”的概念大家可能還比較生疏,現(xiàn)在你只要了解,在一個XML文件中能夠同時使用幾個不同的DTD或Schema定義。
下表列出了model可能的取值:

取 值

釋  意

open表明該元素可以包含其它未在XML Schema中定義的元素和屬性
closed表明該元素只能包含在本XML Schema中定義過的元素和屬性

缺省狀態(tài)下,XML Schema的model取值"open",也就是說,該元素可以包含其它未在XML Schema中定義的元素和屬性。但是,這并不意味著任何元素和屬性都可在Schema中出現(xiàn),允許出現(xiàn)的前提是這些"異類"元素和屬性必須在單獨的XML Schema中加以定義,并且必須在引用的它們的元素中以命名空間形式指定其出處。
     2. element元素
      ElementType只是起到聲明元素的作用,至于元素的內(nèi)容究竟是什么,則要靠它的子元素element來說明。element的語法表達(dá)如下:

<element 
    type="元素類型" 
    [minOccurs="{ 0 | 1 }"] 
    [maxOccurs="{ 1 | * }"] 
>

element實際上是對該Schema中ElementType聲明的引用,而具體引用什么元素類型,就要靠type屬性指定了。type屬性不可缺少,并且為了保證type指定的是已經(jīng)聲明過的元素,要求它的取值必須同某個ElementType中的name屬性嚴(yán)格一致。至于其它兩個屬性倒是可有可無。minOccurs指定該元素在其父元素中出現(xiàn)的最小次數(shù),缺省值為1,表明該元素至少出現(xiàn)一次;也可以取值為0,表明該元素是可選的,可以不出現(xiàn)。maxOccurs則指定了該元素出現(xiàn)的大次數(shù),缺省值同樣為1,表明該元素至多出現(xiàn)一次;也可取值為“*”,表明該元素在XML實例文檔中出現(xiàn)次數(shù)不受限制。

3.group元素
  DTD中有成組的概念,相應(yīng)的,Schema中也有“group”元素。它的語法表達(dá)類似element元素:

<group
    order="{one | seq | many}" 
    [minOccurs="{ 0 | 1 }"] 
    [maxOccurs="{ 1 | * }"] 
>

Schema驗證XML概念的示例分析<AttributeType 和DTD的規(guī)定相同,組里的內(nèi)容可以是元素,也可以是另一個子組。屬性order指定該組中的元素或子組的順序,minOccursmaxOccurs分別指定了該組在其父元素中出現(xiàn)的最小次數(shù)和大次數(shù)。

4.用Schema定義元素屬性  
   
Schema中用來定義屬性的元素有兩個,AttributeType元素是聲明屬性的,attribute元素則是說明一個元素中究竟包含那些屬性。
   AttributeType元素
  AttributeType元素也是Schema中的重要元素之一,用于定義該Schema文檔中出現(xiàn)的屬性類型。AttributeType的語法表達(dá)如下:

  name="屬性名" 
  dt:type="屬性類型" 
  dt:values="枚舉值列表" 
  default="缺省值" 
  required="{yes | no}" 
>
  1. name
    name不言而喻,自然是所聲明的屬性類型的名稱。注意,該屬性是必須的。

  2. dt:type
    dt:type指定所聲明屬性的數(shù)據(jù)類型,它除了支持DTD中包含的全部十大數(shù)據(jù)類型外,還支持一些擴展屬性。Schema中的十個基本屬性與DTD中屬性的對應(yīng)關(guān)系請見下表:

Schema中基本類型DTD中數(shù)據(jù)類型
string#PCDATA
enumerationENUMERATED
idID
idrefIDREF
idrefsIDREFS
nmtokenNMTOKEN
nmtokensNMTOKENS
entityENTITY
entitiesEMTITIES
notationNOTATION

    3.dt:value
dt:value只有當(dāng)dt:type取值"enumeration"時才有效,此時,dt:value需列出所有可能的取值。

   4.default
default指定該屬性類型的缺省取值。default取值必須是有效的,例如,當(dāng)dt:type取值"enumeration"時,default的取值必須來自dt:value所列出的值。

   5.required
required指定該屬性對于引用它的元素是否是必須的。取值yes表明是必須的,取值no則表明并非必須。
 
   6.attribute元素
AttributeType和attribute的關(guān)系與ElementType和element的關(guān)系相同,AttributeType只是起到聲明屬性的作用,而真正指明一個元素具有哪些屬性還需依靠attribute元素。

關(guān)于“Schema驗證XML概念的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

分享標(biāo)題:Schema驗證XML概念的示例分析-創(chuàng)新互聯(lián)
URL鏈接:http://bm7419.com/article0/hdcio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)標(biāo)簽優(yōu)化、網(wǎng)站制作、網(wǎng)站內(nèi)鏈定制網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司