91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Schema驗證XML概念的示例分析

發布時間:2021-06-04 14:12:23 來源:億速云 閱讀:158 作者:小新 欄目:編程語言

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

1.Schema 文件的結構
Schema文件和其它XML文件的樣子非常相似,它是由一組元素構成的,其根元素是“Schema”。“Schema”元素是XML Schema中第一個出現的元素,用于表明該XML文檔是一個Schema文檔,相應的,“Schema”的結束標記一般在文檔的末尾。這樣,一個Schema的結構如下:

<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",它定義了在本文檔中可以使用的數據類型;第三個是xmlns:myNS="http://www.xml_step_by_step.edu\ns.xml",它表明下面可能會用到在myNS中定義的元素或屬性。
2.用Schema定義元素及其內容
在講述Schema中和ETD定義相對應的種種定義方法之前,我們先來看看所涉及的三個Schema元素:ElementType、element、group。
    1.ElementType元素
    在Schema文檔中使用ElementType來聲明XML文件中會出現的元素,ElementType的語法表達如下:

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

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

取 值

釋  意

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东丽区| 临汾市| 安福县| 徐水县| 康定县| 津市市| 建阳市| 内丘县| 淳化县| 三门峡市| 子长县| 衡南县| 建湖县| 玉树县| 上饶市| 玛沁县| 宁河县| 白山市| 河源市| 富宁县| 武安市| 民和| 南乐县| 威远县| 岗巴县| 刚察县| 景谷| 同心县| 茶陵县| 阳西县| 莆田市| 突泉县| 正蓝旗| 离岛区| 佛冈县| 方山县| 普格县| 阜阳市| 榆林市| 石狮市| 高州市|