激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

XML認證元素類(lèi)型聲明

時(shí)間:2024-05-28 19:31:00 IBM認證 我要投稿
  • 相關(guān)推薦

XML認證元素類(lèi)型聲明

  一個(gè)Dtd不僅要告訴語(yǔ)法分析器它所關(guān)聯(lián)的XML文件的根元素是什么,而且還要告訴語(yǔ)法分析器文件的內容和結構,說(shuō)清文件結構中的每一個(gè)細節。為了定義這些細節,我們必須展開(kāi)Dtd中元素說(shuō)明部分,使用元素類(lèi)型聲明(Etd)來(lái)聲明所有有效的文件元素。

  Etd不但說(shuō)明了每個(gè)文件中可能存在的元素,給出了元素的名字,而且給出了元素的具體類(lèi)型。一個(gè)XML元素可以為空,也可以是一段純文本,還可以有若干個(gè)子元素,而這些子元素同時(shí)又可以有它們的子元素。Dtd正是通過(guò)元素之間的父子關(guān)系,描述了整個(gè)文件的結構關(guān)系。

  Etd應該采用如下的結構:

  因此,在前面的例子里,可以在文件序言中通過(guò)如下方式定義“聯(lián)系人列表”這個(gè)元素:

  ]>

  <聯(lián)系人列表>

  ...

  這個(gè)Dtd定義了一個(gè)XML文件,它只有一個(gè)根元素,名為“聯(lián)系人列表”,這個(gè)元素可以有任何類(lèi)型的子元素,也可以是純文本,還可以為空。

  但是需要注意,盡管元素“聯(lián)系人列表”被定義為“可以”包含其它元素,但實(shí)際上這個(gè) Dtd除了“聯(lián)系人列表”元素本身外沒(méi)有定義任何其它元素,所以也就沒(méi)有其它元素可以用作“聯(lián)系人列表”的子元素。“有效的”XML文件規定文件中所使用的任何元素都必須在Dtd中給出定義。

  在“ANY”定義下使用任何純文本都是無(wú)須另加說(shuō)明的,這一點(diǎn)與元素不同。故而,在相同的Dtd定義下,下面一段XML文件則是合法的:

  ]>

  <聯(lián)系人列表>

  純文本信息說(shuō)明聯(lián)系人信息

  元素類(lèi)型聲明2

  為了使元素“聯(lián)系人列表”中還可以包含其它元素,從而使前面的那個(gè)文件是“有效 的”,我們還需要定義元素“聯(lián)系人”和“姓名”。

  ]>

  <聯(lián)系人列表>

  <聯(lián)系人>

  <姓名>張三

  現在我們已經(jīng)定義了一個(gè)XML文件,它的根元素名為“聯(lián)系人列表”。“聯(lián)系人列表” 中可以包含任何純文本數據,也可以含有子元素(這即是ANY的含義)。根據后面的定義,我們知道,“聯(lián)系人列表”中可以包含子元素“聯(lián)系人”,也可以直接包含子元素“姓名”;“聯(lián)系人”元素又可以包含自己的子元素,名為“姓名”;而“姓名”則只能包含純文本數據(即(#PCDATA))。

  注意:

  除了根元素外,在定義其它元素時(shí)使用關(guān)鍵字ANY都是不好的習慣。

  在定義元素時(shí),Etd的順序是無(wú)關(guān)緊要的。

  還有一點(diǎn)要注意,不能對不同的元素使用相同的元素名,即便這些元素的內容、包含的子元素不同也不行,因為它只會(huì )引起文件各個(gè)元素的混淆,使文件的可讀性大打折扣。

  元素名的第一個(gè)字母必須是字母、或下劃線(xiàn)(_)、或冒號(:),后跟字母、數字、句號(.)、冒號、下劃線(xiàn)、連結號(-)的組合,并且不能包含空白符,不能以 “xml”開(kāi)頭。盡管XML1.0標準允許使用任何長(cháng)度的文件名,但是實(shí)際的XML處理器常常會(huì )限制標記名的長(cháng)度。

  定義元素及其子元素

  對于以下的例子:

  ]>

  <聯(lián)系人列表>

  <聯(lián)系人>

  <姓名>張三

  準確的說(shuō)法是,元素“聯(lián)系人”必須包含一個(gè),且只能包含一個(gè)子元素“姓名”?扇绻釉厥“EMAIL地址”怎么辦?聯(lián)系人可能根本沒(méi)有自己的EMAIL郵箱,也可能有好幾個(gè)EMAIL帳號。

  使用正則表達式,我們就可以解決上述問(wèn)題,描述父元素與子元素之間非常復雜的關(guān)系。例如,你可以對一個(gè)元素作如下任何一種類(lèi)型的定義:它有一個(gè)子元素,有一個(gè)或多個(gè)子元素,有零個(gè)或多個(gè)子元素,至少有一個(gè)子元素。你還可以定義復合關(guān)系,比如“元素X是有效的,如果它含有一個(gè)或多個(gè)子元素Y,或一個(gè)子元素Z”。

  元素定義是由它們的元素內容模型(ECM)來(lái)描述的,也就是說(shuō),是由緊跟元素后面的括號中的內容來(lái)定義的。因此,正如我們前面見(jiàn)到的,元素“聯(lián)系人”的ECM被描述為子元素“姓名”:

  ECM中的內容采取一組正則表達式的形式。在下表中,我們列出了正則表達式中可能出現的元字符:

  元字符 含義

  + 出現一次或多次

  * 出現零次或多次

  ? 可選,不出現或出現一次

  () 一組要共同匹配的表達式

  | OR,或,AND 要求嚴格遵從順序要求

  下面幾節中,我們將通過(guò)一些例子具體講解這些元字符的用法,對使用正則表達式來(lái)定義ECM的方法獲得一些感性認識。

  有順序的子元素

  一個(gè)元素的各個(gè)子元素之間可以以任意順序出現,也可以強制遵循一定的順序。

  考慮下面的Dtd定義:

  遵從這個(gè)Dtd的XML文件可以為:

  <聯(lián)系人>

  <姓名>張三

  zhang@aaa.com

  同樣,下面這個(gè)XML文件也是有效的:

  <聯(lián)系人>

  zhang@aaa.com

  <姓名>張三

  由于我們在Dtd定義中僅僅用空白符分隔了元素“聯(lián)系人”的兩個(gè)子元素,這說(shuō)明我們并沒(méi)有嚴格要求兩個(gè)元素出現的順序,因此上面兩種寫(xiě)法都是允許的。如果我們使用逗號“,”來(lái)分隔兩個(gè)子元素,那么XML文件中,元素“姓名”就必須出現在元素“EMAIL”前面。

  重復元素

  讓我們再把上節的例子作一個(gè)小小的改動(dòng):

  讓我們看看前面給出的正則表達式的元字符集列表,它說(shuō)明一個(gè)“聯(lián)系人”元素中必須含有一個(gè)“姓名”元素,后面接一個(gè)或多個(gè)“EMAIL”元素。這樣,下面的這段XML 文件是“有效的”。

  <聯(lián)系人>

  <姓名>張三

  zhang@aaa.com

  zhang@hotmail.com

  zhang@yahoo.com

  那么下面這段XML文件不是有效的,因為它沒(méi)有“EMAIL”元素,而“+”代表了“一個(gè)或多個(gè)”。

  <聯(lián)系人>

  <姓名>張三

  如果你需要表示“零個(gè)或多個(gè)”,那么應該使用字符“*”。例如:

  成組元素

  子元素可以使用括號并為一組。因此,下面的Dtd片段說(shuō)明,一個(gè)“聯(lián)系人”元素中可以有一個(gè)或多個(gè)“姓名/EMAIL”子元素對,并且在每個(gè)子元素對中,“姓名”都放在“EMAIL”之前。

  符合這個(gè)Dtd的XML文件可以是:

  <聯(lián)系人>

  <姓名>張三

  zhang@aaa.com

  <姓名>李四

  li@bbb.org

  <姓名>王五

  wang@ccc.org

  注意,僅僅是因為“+”由括號里面移到括號外面,元素“聯(lián)系人”的內容就大大不同了。

  OR或

  號“|”描述了一個(gè)OR操作。因此,下面的Dtd片段所規定的XML元素是:所有的 “聯(lián)系人”元素應該有一個(gè)“姓名”子元素,同時(shí),在此之后還應該有一個(gè)“電話(huà)”或一個(gè)“EMAIL”元素,但不能同時(shí)有“電話(huà)”和“EMAIL”兩個(gè)元素。

  一個(gè)符合上述Dtd定義的“有效的”XML文件的定義應該是:

  <聯(lián)系人>

  <姓名>張三

  <電話(huà)>12345678

  或者是:

  <聯(lián)系人>

  <姓名>張三

  zhang@yahoo.com

  注意:在一個(gè)組中,只允許使用一種連接符(例如“,”或“|”)。因此,象下面這樣定義的Dtd是不合法的:

  要想使用多種連接符,只有通過(guò)創(chuàng )建子組的方式,使用

  可選子元素

  字符“?”說(shuō)明一個(gè)子元素是可選的,它可以出現,也可以不出現。因此,在下面的Dtd 中,我們規定,每一個(gè)“聯(lián)系人”都必須有一個(gè)“姓名”子元素,同時(shí)或者有一個(gè)“電話(huà)” 子元素,或者有一個(gè)“EMAIL”子元素,此外,它還可以包含一個(gè)“地址”子元素,也可以不包含這種元素。

  根據這個(gè)Dtd描述,下面的XML片段是“有效的”:

  <聯(lián)系人>

  <姓名>張三

  zhang@aaa.com

  <地址>

  <街道>五街1234號

  <城市>北京市

  <省份>北京

  同樣,下面這段不包含“地址”元素的XML片段也是“有效的”:

  <聯(lián)系人>

  <姓名>張三

  zhang@aaa.com

  混合內容&空元素

  當然,可能也有一些時(shí)候,你在一個(gè)元素中既希望包含子元素,也希望包含純文本。 XML中允許這種使用方法,并把這種元素稱(chēng)為混合內容的元素。在下面的例子中, “聯(lián)系人”就是一個(gè)混合元素。

  ]>

  <聯(lián)系人列表>

  <聯(lián)系人>

  <姓名>張三

  <電話(huà)>(010)62345678

  zhang@aaa.com

  這是關(guān)于張三的信息

  注意,由于在“(姓名|電話(huà)|EMAIL|#PCDATA)”之外有“*”,所以在元素“聯(lián)系人”中可以包含零個(gè)或多個(gè)“姓名”、電話(huà)、EMAIL和純文本字段。

  還有一種情況沒(méi)有說(shuō),那就是,一個(gè)元素中不包含任何子元素,也不包含純文本。對于這種情況,我們可以定義一個(gè)空標記。當然,定義這樣一個(gè)標記很簡(jiǎn)單,你只需要使用關(guān)鍵字EMPTY就可以了,例如: 這樣,在你的XML文件中,就可以使用一個(gè)空元素。

  定義有效的元素屬性

  現在我們已經(jīng)學(xué)會(huì )如何定義一個(gè)元素以及它的內容,如何描述父元素與子元素之間錯綜復雜的關(guān)系,只差不知道如何定義元素的屬性了。

  在第二篇教程中我們曾經(jīng)提到過(guò)屬性,那個(gè)例子是一個(gè)有關(guān)“商品”的元素,它有兩個(gè)屬性,即“類(lèi)型”和“顏色”:<商品 類(lèi)型 = "服裝" 顏色 = "黃色">

  在Dtd中定義屬性時(shí),我們使用下面的格式:

  元素名是屬性所屬的元素的名字,在上面例子中,元素名是“商品”;屬性名是屬性的命名,例子中,“類(lèi)型”和“顏色”是屬性名;缺省值說(shuō)明在XML文件中,如果沒(méi)有特別說(shuō)明屬性的取值,語(yǔ)法分析器默認它具有的取值;屬性類(lèi)型則用來(lái)指定該屬性是屬于十個(gè)有效屬性類(lèi)型中的哪種類(lèi)型。

  注意:由于A(yíng)TTLIST是一個(gè)屬性的列表,它可以包含很多屬性,在實(shí)際應用中,一個(gè)元素也經(jīng)常有多個(gè)屬性。

  上面例子中的屬性可以如下定義:

  類(lèi)型 CDATA #REQUIRED

  顏色 CDATA #IMPLIED

  >

  在元素說(shuō)明的四個(gè)部分中,我們需要再詳細討論一下元素類(lèi)型和缺省值。在下一節中,我們就從缺省值說(shuō)起。

  屬性缺省值

  根據XML文件是否必須為一個(gè)屬性提供取值,屬性的缺省值又可以分為以下三類(lèi):

  必須賦值的屬性

  關(guān)鍵字REQUIRED說(shuō)明XML文件中必須為這個(gè)屬性給出一個(gè)屬性值。例如,假設你想定義一個(gè)"頁(yè)面作者"元素,并把這個(gè)元素加入所有網(wǎng)站中的每一個(gè)頁(yè)面。之所以定義這個(gè)元素,是為了頁(yè)面編輯者能夠提供他的聯(lián)系信息,以便當發(fā)現頁(yè)面錯誤或無(wú)效鏈接時(shí),可以及時(shí)地通知他。在這種情況下,每個(gè)頁(yè)面作者都有不同的個(gè)人信息,所以你無(wú)法事先知道應該用什么作為缺省值,但你又的確需要提供每個(gè)人的信息。這時(shí)候,你就可以把與聯(lián)系信息相關(guān)的屬性定義為必須的(REQUIRED),而且不用提供缺省值。

  屬性值可有可無(wú)的屬性

  當使用IMPLIED關(guān)鍵字時(shí),文法解釋器不再強行要求你在XML文件中給該屬性賦值,而且也無(wú)須在Dtd中為該屬性提供缺省值?梢哉f(shuō),這是對屬性值有無(wú)的最低要求,現實(shí)中經(jīng)常用到。

  固定取值的屬性

  還有一種特殊情況,你需要為一個(gè)特定的屬性提供一個(gè)缺省值,并且不希望XML 文件的編寫(xiě)者把你的缺省值替代掉。這時(shí)候,就應該使用FIXED關(guān)鍵字,同時(shí)為該屬性提供一個(gè)缺省值。

  定義缺省值的屬性

  如果不使用上面任何一種關(guān)鍵字的話(huà),該種屬性就是屬于這種類(lèi)型。對于這種屬性,你需要在Dtd中為它提供一個(gè)缺省值。而在XML文件中可以為該屬性給出新的屬性值來(lái)覆蓋事先定義的缺省值,也可以不另外給出屬性值,后一種情況下它就默認為采用Dtd中給出的缺省值。

  至于究竟采用哪種缺省值,就看實(shí)際需要了。下面給出一個(gè)具體的例子:

  姓名 #CDATA #IMPLIED

  年齡 #CDATA #IMPLIED

  聯(lián)系信息 #CDATA #REQUIRED

  網(wǎng)站職務(wù) #CDATA #FIXED "頁(yè)面作者"

  個(gè)人愛(ài)好 #CDATA "上網(wǎng)">

  屬性類(lèi)型

  一個(gè)元素可以為以下十種類(lèi)型中的任意一種:

  CDATA

  Enumerated

  ID

  IDREF

  IDREFS

  ENTITY

  ENTITIES

  NMTOKEN

  NMTOKENS

  NOTATION

  下面我們就來(lái)一個(gè)一個(gè)講述。

  CDATA類(lèi)型

  CDATA指的是純文本,即由字符、符號“&”、小于號“<”和引號“"”組成的字符串。當然,就象我們前面講到的,你應該使用實(shí)體&代替“&”,<代替“<”, "代替“"”。

  請看下面這個(gè)關(guān)于劇本的例子:

  encoding="Gb2312"

  standalone = "yes"?>

  ]>

  <劇本>

  <對話(huà) 演員="某甲">我可不這么認為!

  <對話(huà) 演員="某乙">為什么呢?


【XML認證元素類(lèi)型聲明】相關(guān)文章:

關(guān)于IBM XML認證考試的要點(diǎn)01-13

IBM XML認證知識點(diǎn):Dtd03-18

IBM認證考試認證體系01-20

Adobe認證技術(shù)認證內容03-19

Adobe認證認證體系01-11

Adobe認證技能認證簡(jiǎn)介03-19

Adobe認證ning認證簡(jiǎn)介03-19

華為認證中的HCIE認證03-19

微軟認證考試最新認證01-13

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频