DTD規範XLM文檔筆記

 

DTD規範XLM文檔筆記

1、使用DTD的好處

v        用DTD提供統一格式。例如,用DTD規定個人簡歷文檔的邏輯結構,包括所需填寫內容和內容排列方式,所有按照這個DTD編寫的個人簡歷都將具有統一格式。

v      用DTD驗證數據有效性。DTD約束文檔邏輯結構,可以根據DTD檢查數據,驗證其是否符合規定要求,確保數據正確和有效。

v      根據DTD編寫文檔樣式單。DTD能在不提供原始資料的情況下,表示出一個網頁或文檔的架構元素,這意味着用戶能先根據DTD爲未來的文檔編寫樣式單,然後再安全且不破壞結構的把用戶的資料放上去,提高工作效率。

2、Dtd文檔的基本格式

內連接格式:

<?xml  version=”1.0 encoding=”utf_8” standalone=”true”?>

<!DOCTYPE 根標記的名稱[約束]>   內部DTD

 

       外連接格式

<!DOCTYPE 根標記的名稱 SYSTEM  “dtd1.dtd”>   dtd的引入

 

格式:<根標記>

                            <字標記>

                            </字標記>

                            ………..

</根標記>

3.DTD對元素聲明及應用:

.      Dtd1.dtd的定義能在xml文檔出現的元素、屬性、xml文檔的結構

Dtd的格式:

                      <?xml version=”1.0” encoding=”utf_8”?>

                     <!ELEMENT  元素的名稱 元素的內容>

                     <!ATTLIST 元素名 屬性名 類型keyword  “默認值”>  對屬性的設置 

 

·                                 (1)空元素即爲單標記 <br/>   或者    <br></br>  兩者形式一樣,但不能加空格   用EMPTY修飾

(2)ANY型的,因爲約束是對文件進行規範的,所以any相對來說沒有任何意義。可以成爲無效的文件

有效的XML文檔的所以屬性都必須在約束中聲明才爲有效的文檔

 

(3)定義字符串內容的元素

              <!ELEMENT 元素名 #PCDATA>

              <!ELEMENT 書籍列表 (#PCDATA)>

 

(4)混合類型內容的元素-1------既有字符串內容,又有子元素的    

              但一般並不推薦使用這個元素                                                    

        <!ELEMENT  學生 (#PCDATA|學號|姓名)*> 

注:  | 和* 一起表示出現多次,而且是無序的,可以出現多次,而且文本出現的順序是任意的

 

              例子:

                      <?xml version=”1.0” encoding=”utf_8”?>

                     <喜歡的遊戲>

                                   這是我喜歡的遊戲

                                   <遊戲>

                                                 CF遊戲好玩

                                                 <遊戲類型>463</遊戲類型>

                                                 <遊戲名稱>4trt</遊戲名稱>

                                                 CF遊戲好玩

                                                 <遊戲類型>rewtre</遊戲類型>

                                                 <遊戲名稱>l;lkjhgfds</遊戲名稱>

                                   </遊戲>

                     </喜歡的遊戲>

 

                           

混合類型內容的元素2-------包含的不是文本,也是子元素

              <!ELEMENT  學生  (學號,姓名)*>   * 代表0次或多次

 

(5)定義子元素

              有序的子元素

              互斥的子元素

              根據出現的頻率來定:

 

              有序的子元素的例子:

                     <書籍列表>

                            <計算機書籍>

                                   <書名>順利度過</書名>

</計算機書籍>

<計算機書籍>

                                   <價格>順利度過</價格>

</計算機書籍>

                     </書籍類表>

4、DTD對屬性聲明

       屬性是描述元素的額外信息的,是對元素的修飾與補充。一般來說,信息詳實的XML文檔都是一個特點,即元素通過屬性來描述邊緣信息。

       在 DTD 中,屬性通過 ATTLIST 聲明來進行聲明。一個屬性聲明可以聲明一個元素的多個屬性。

       (1)對屬性聲明的格式:<!ATTLIST 元素名 屬性名 屬性類型 keyword “默認值”>

      

                                     <!ELEMENT作者 地址 CDATA  #FIXED  “保定市”> 

注: #FIXED “保定市  可設,可不設,系統默認

   (2) 對屬性的限制條件:

                     # CDATA       純文本的的類型

                     # IMPLIED  可選的

                     # FIXED “保定市”  指定固定值

                     # PEQUIRED 必須爲該屬性指定默認值

                     # LMMPLIED  不指定默認值

                     #PCDATA

 

 (3)屬性的類型:

              1、CDATA  字符串數據

              2、(en1|en2…..) 枚舉類型

                            例子:<!ATTLIST  作者  性別(男|女)  “男”>   默認值

              3、ID    標識符必須是唯一的

                            例子:<!ATTLIST 計算機書籍 ID # REQUIRED>

 

              4、IDREF  該值必須爲另外一個的屬性值

                     例子:<!ELEMNT 書籍列表 (計算機書籍 | 讀者)>

                              <!ELEMENT 讀者 EMPTY>

                              <!ATTLIST  讀者 書號 IDREF  # IMPLIED >  # IMPLIED表示可選的

 

              5、IDREFS 表示可引用多個id值

                     <!ATTLIST  讀者 書號 IDREFS  # IMPLIED >

 

                     <讀者 書號=“0001_0002”>

 

 

6、NMTOKEN 和 NMTOKENS類       

                     NMTOKEN 和CDATA類型相比, NMTOKEN要求嚴格

                     例子:

                            <!ATTLIST 地址 NMTOKEN    # PEQUIRED>

 

NMTOKENS可以取多個合法的元素

 

5、實體的定義-------ENTITY  ENTITIES  類型的

       (1)實體的概念:實體是包含了文檔片段的虛擬存儲單元,可用來存儲XML聲明、DTD其他形式的文本及二進制數據等。簡單來講就是一段代碼或數據的代稱,這個代稱即爲實體

的名字。

       (2)實體引用:是用一個字符串代替另一個字符串。 

(3)實體的引用例子: conent “java書籍的詳細內容的介紹”

                                   <書名>conten</書名>    用content來代替字符串的內容,減少麻煩

       (4)實體引用的作用:

Ø             實體定義的作用:提高代碼的服用,方便修改,維護XML文檔

Ø             使用某些特殊的符號,這些特殊的符號可能會使XML解析器混淆

Ø       減少字符輸入量,如果某個字符串特別長,而且需要經常使用,則可以定義爲實體

(5)實體的分類:可解析的實體和不可解析的實體

              1、按照實體的具體內容分類

                     可解析的實體:可解析實體的具體內容爲簡單的字符、數字、文本塊。

                     不可解析的實體:具體內容則爲圖片、聲音等二進制文件。

                     注:一般情況下都爲不可解析的實體

           2、按照邏輯存儲分類:

                     內部實體和外部實體

                                   以下都是內部實體  

3、按使用範圍分:

                     一般實體和參數實體:

                            一般(普通)實體的定義的語法--------在xml文檔中使用:

                                          <!ELNTITY  實體名  “實體值”>

                                          使用實體時:&實體名;

                                          注意:實體是在dtd中定義的

                                   普通實體可以作爲屬性來表示

                                          <!ATTLIST 簡要介紹 connect  >

                                          <簡要介紹 connect=”&title”>  引用實體當做屬性

                                   可以是元素

                                          <簡要介紹>&實體名</簡要介紹>

 

                      參數實體------在dtd文檔中使用,對dtd中的屬性設置:

                                          語法:

                                                 <!ENTITY  %實體名 “實體值“>

                                                        使用:&實體名

 

                                                  <!ENTITY  %  boolean “yes|no|true|false”>

                                                       <!ATTLIST  作者 性別 (%boolean;)>

             

                            兩者不同:

                                   一般實體   用於xml文檔中   % 實體名 ““    % 實體名;

                                   參數實體   用於dtd文檔中    實體名  ““      &實體名;

 

              外部實體:

                     在dtd中定義

                            <!ELEMENT  out  SYSTEM  “文檔名稱“>

                            <!ELEMENT  out  SYSTEM  “extententity.txt“>  out代替了文本中的內容

 

              對外部實體的引用 : <簡要介紹>&outer;</簡要介紹>

 

       注:元素的定義用ELEMENT

屬性的定義用ATTLIST

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章