麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > XML > 正文

XML DTD詳解

2024-07-21 02:52:12
字體:
來源:轉載
供稿:網友

前情提要與本文內容介紹

  前面的兩篇xml相關博文:

  第一篇是介紹格式正規的XML: 格式正規的XML:語法 屬性 實體 處理指令 樣式單 CDATA節

  第二篇介紹DTD,引入有效的XML的概念(符合語法規范并符合DTD要求),并介紹DTD的三種使用方法:有效的XML: DTD(文檔類型定義)介紹與三種使用方式

  一個有效的XML文檔必然是結構正規的,結構正規的XML文檔不一定是有效的,即有效的是格式正規的一個子集。

  本文詳細介紹DTD,包括其對元素的定義,屬性的定義,以及實體的定義。

 

元素的定義

 

DTD中的修飾符號:

   

  這部分符號可以聯系正則表達式的符號來記憶。

 

屬性的定義

    

 

屬性類型——CDATA

  比如:

<!ATTLIST title name CDATA #REQUIRED>

 

  定義了一個屬性,是屬于title元素的,屬性名叫name,類型是字符串(包括數字和中文),并且是一個必須要有的屬性。

 

屬性類型——NMTOKEN/NMTOKENS

    

  左邊圖中因為加了空格而出錯。

 

屬性類型——ID

  類型為ID的屬性取值必須是唯一的。

 

 

  從這個例子還可以看到同一個元素可以一次定義多個屬性,多個屬性之間用空格分隔即可。

 

屬性類型——IDREF/IDREFS

 

                                        (“兒子”后面漏掉了一個斜線)

 

屬性類型——Enumerated

  實現定義好一些值,屬性的值必須在所列出的值的范圍內。

    

 

屬性的特點

#REQUIRED

  元素的所有實例都必須有該屬性的值(NOT NULL)。

  語法:

<!ATTLIST 元素名 屬性名 屬性類型 #REQUIRED>

 

  DTD示例:

<!ATTLIST person number CDATA #REQUIRED>

 

  XML示例:

<person number="6788"/>

 

 

#IMPLIED

  元素的實例中可以忽略該屬性(NULL)。

  語法:

<!ATTLIST 元素名 屬性名 屬性類型 #IMPLIED>

 

  DTD示例:

<!ATTLIST contact fax CDATA #IMPLIED>

 

  XML示例:

<contact fax="888-228833"/>

 

  沒有這個屬性也是對的。

 

#FIXED value

  元素實例中該屬性的值必須為指定的固定值。

  語法:

<!ATTLIST 元素名 屬性名 屬性類型 #FIXED "value">

 

  DTD示例:

<!ATTLIST sender company CDATA #FIXED "Microsoft">

 

  XML示例:

<sender company="Microsoft"/>

 

 

Default value

  為屬性提供一個默認的值。

  語法:

<!ATTLIST 元素名 屬性名 屬性類型 "value">

 

  DTD示例:

<!ATTLIST hello paymenttype CDATA "check">

 

  XML示例:

<hello paymenttype="check"/>

 

 

定義實體

一般

  語法:

<!ENTITY 實體名 "實體值">

 

  DTD示例:

<!ENTITY writer "Donald Duck"><!ENTITY copyright "Copyright W3Schools">

 

  XML示例:

<author>&writer;&copyright;</author>

 

 

外部實體:

  語法:

<!ENTITY 實體名 SYSTEM "URI/URL">

 

  DTD示例:

<!ENTITY writer SYSTEM "http://www.baidu.com/index.php?tn=coralQQ"><!ENTITY copyright SYSTEM "http://www.baidu.com/index.php?tn=coralqq">

 

  XML示例:

<author>&writer;&copyright;</author>

 

  與上面的區別就是加上了SYSTEM關鍵字。

  這樣就不是使用網址的字符串來代替,而是用網址的文檔本身內容。

 

實體類型

 

 

  前面所講的都是普通實體,分為內部實體和外部實體。

 

  所謂參數實體,該實體實際上不是在具體實例化文檔中使用,而是在DTD文檔內部被使用。

  我們可以定義一個實體,然后在DTD內部來引用它。

  如下:

<!ENTITY %地址 "街道,城市,郵編,國家"><!ELEMENT 聯系人 (人名,電話,%地址;)>

 

  

總結如下:

  普通實體:DTD中定義,XML中使用,使用格式: &名;

  參數實體:DTD中定義,定義的時候要用%,DTD中使用,使用格式: %名;

  普通實體和參數實體都分為內部實體外部實體兩種,外部實體定義需要加上SYSTEM關鍵字,其內容是URL所指向的外部文件實際的內容。

  如果不加SYSTEM關鍵字,則為內部實體,表示實體指代內容為字符串。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲午夜在线 | 色偷偷一区 | 黄色高清免费网站 | 免费1级做55爰片l在线观看 | 国产毛片毛片毛片 | 大逼逼影院 | 亚洲天堂在线电影 | 久久精品网 | 亚洲午夜天堂吃瓜在线 | 2021国产精品视频 | 日韩视频一 | 精精国产xxxx视频在线播放7 | 久久中文字幕在线观看 | 久久精品站 | 91精品福利视频 | 欧美一级免费在线观看 | 久久久国产精品电影 | 黄色成人在线 | 男女无套免费视频 | 蜜桃视频在线免费播放 | 极品美女一级毛片 | 亚洲午夜国产 | 蝌蚪久久窝 | 亚洲午夜不卡 | 日本爽快片100色毛片视频 | 伊人99re| 日韩欧美高清片 | 日本中文高清 | 免费国产网站 | 天天碰夜夜操 | 成人黄视频在线观看 | 毛片a区| 黄色网址在线免费 | 久久艹逼 | 亚洲天堂在线电影 | 久久艹综合 | 久久久精品网 | 亚洲午夜不卡 | 4p一女两男做爰在线观看 | 久色精品| 欧美日韩夜夜 |