DTD約束 —— Xml文檔 約束技術 學習筆記


本文查閱方法:
    一、查閱目錄 —— 查閱本文目錄,肯定想要查閱的目錄標題
    二、快捷「查找」 —— 在當前瀏覽器頁面,按鍵 「Ctrl+F」 按鍵組合,開啓瀏覽器的查找功能,
             在查找搜索框中 輸入須要查閱的 目錄標題,即可以直接到達 標題內容 的位置。
    三、學習小結 —— 文中的學習小結內容,是筆者在學習以後總結出的,開發時可直接參考其進行應用開發的內容, 進一步加快了本文的查閱 速度。(水平有限,僅供參考。)javascript

 

 


 

 

 

 

本文目錄java

 

    學習小結web

 

    一、DTD約束快速入門編程

 

    二、編程校驗XML文檔正確性瀏覽器

 

    三、添加DTD約束的兩種方式app

 

    四、在Xml文件內編寫DTD約束 工具

 

    五、引用DTD約束學習

 

    六、DTD 約束語法細節網站

 

    七、DTD 的語法細節-  元素定義xml

 

    八、DTD 的語法細節-  屬性定義 

 

    九、DTD 的語法細節-  實體定義 

 

    十、附件資料下載

 

 

 相關文章


    XML文檔語法 學習筆記
        地址:http://even2012.iteye.com/blog/1828064

    DTD約束 —— Xml文檔 約束技術 學習筆記
        地址:http://even2012.iteye.com/blog/1828290

    Schama —— Xml文檔約束技術 學習筆記
        地址:http://even2012.iteye.com/blog/1832073

    Dom4j 解析Xml文檔及 XPath查詢  學習筆記
        地址:http://even2012.iteye.com/blog/1832068

    Jaxp :Dom解析Xml文檔和SAX解析Xml文檔學習筆記
        地址:http://even2012.iteye.com/blog/1829981


 

 

 

 學習小結



 

 

 

 


 

 

 

 

 

一、DTD約束 快速入門

 

    

 

 

 

 


 

 

 

二、編程校驗XML文檔正確性

 

    (備註:該知識可選學:大多數IDE工具(如MyEclipse等)都內置了校驗工具,自動進行校驗。)

 

    IE5以上瀏覽器內置了XML解析工具:Microsort.XMLDOM,開發人員能夠編寫javascript代碼,利用這個解析工具裝載xml文件,並對xml文件進行dtd驗證。

 

    (1)建立xml文檔解析器對象

 

        var xmldoc = new ActiveXObject("Microsoft.XMLDOM");

 

    (2)開啓xml校驗

 

        xmldoc.validateOnParse = "true";

 

    (3)裝載xml文檔

 

        xmldoc.load("book.xml");

 

    (4)獲取錯誤信息

 

        xmldoc.parseError.reason;  

 

        xmldoc.parseError.line

 

 

 


 

 

 

三、添加DTD約束的兩種方式

   a. 內置DTD約束——在XML文件內編寫 ;

        語法:<!DOCTYPE 文檔根結點  [

                  約束內容。。。

              ​  ]> 

    ​b. 引用DTD約束——做爲一個單獨的文件編寫 ;

    

 


 

 

 

四、在Xml文件內編寫DTD約束

 

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

 

    <!DOCTYPE 書架 [

 

          <!ELEMENT 書架 (書+)>

 

          <!ELEMENT 書 (書名,做者,售價)>

 

          <!ELEMENT 書名 (#PCDATA)>

 

          <!ELEMENT 做者 (#PCDATA)>

 

          <!ELEMENT 售價 (#PCDATA)>

 

    ]>

 

    <書架>

 

      <書>

 

        <書名>Java就業培訓教程</書名>

 

        <做者>張孝祥</做者>

 

        <售價>39.00元</售價>

 

      </書>

 

      ...

 

    </書架>

 


 

 

 

五、引用DTD約束

 

    XML文件使用 DOCTYPE 聲明語句來指明它所遵循的DTD文件,DOCTYPE聲明語句有兩種形式: 

 

    (1)當引用的文件在本地時,採用以下方式:

 

        <!DOCTYPE 文檔根結點 SYSTEM "DTD文件的URL">

 

             例如: <!DOCTYPE 書架 SYSTEM 「book.dtd」>。 

 

    (2)當引用的文件是一個公共的文件時,採用以下方式:  

 

        <!DOCTYPE 文檔根結點 PUBLIC "DTD名稱" "DTD文件的URL"> 

 

            例如:<!DOCTYPE web-app PUBLIC 

 

            "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"   -----//這是 "DTD名稱" 

 

            "http://java.sun.com/dtd/web-app_2_3.dtd">                 -----//這是 "DTD文件的URL"  

 


 

 

 

六、DTD約束語法細節

    a. 元素定義

    b. 屬性定義

    c. 實體定義


 

 

 

七、DTD 的語法細節-  元素定義

 

    (1)在DTD文檔中使用ELEMENT聲明一個XML元素,語法格式以下所示:

 

           eg:<!ELEMENT 元素名稱 元素類型> 

 

    (2)元素類型能夠是:「元素內容」 或 「類型」 兩種狀況:

 

       a. 如爲 元素內容:則須要使用()括起來,如

 

                <!ELEMENT 書架 (書名,做者,售價)>

 

                <!ELEMENT 書名 (#PCDATA)>

 

        b. 如爲 類型,則直接書寫,DTD規範定義了以下幾種類型:

 

                i. EMPTY:用於定義空元素,例如<br/> <hr/>

               ii. ANY:表示元素內容爲任意類型。

 

        【備註:也就是說 元素的類型位置可填寫三種值: <!ELEMENT 元素名 (元素內容)|EMPTY|ANY   】

 

    (3)元素內容中可使用以下方式,描述內容的組成關係

 

         a. 用「,」分隔,表示內容的出現順序必須與聲明時一致。

 

              eg:<!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)>

 

         b. 用 「|」分隔,表示任選其一,即多個只能出現一個

 

              eg:<!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)>

 

    (4)在元素內容中也可使用+、*、?等符號表示元素出現的次數:

 

             +: 一次或屢次 (書+)

 

             ?: 0次或一次 (書?)

 

             *: 0次或屢次  (書*)

 

    (5)使用圓括號( )批量設置,

 

        例: <!ELEMENT MYFILE ((TITLE*, AUTHOR?, EMAIL)* | COMMENT)>

 


 

 

 

八、DTD 的語法細節-  屬性定義 

 

    (1)Xml文檔中的標籤屬性需經過ATTLIST爲其設置屬性

 

        語法格式:

 

          <!ATTLIST 元素名 

 

            屬性名1 屬性值類型 設置說明

 

            屬性名2 屬性值類型 設置說明

 

            ……

 

          >

 

        Demo:

 

            屬性聲明舉例:

 

                <!ATTLIST 商品

 

                  類別 CDATA #REQUIRED

 

                  顏色 CDATA #IMPLIED

 

                >

 

            對應XML文件:

 

               <商品 類別="服裝" 顏色="黃色">…</商品> 

 

               <商品 類別="服裝">…</商品>     

 

 

 

    (2)經常使用屬性值類型

 

            a. CDATA:表示屬性值爲普通文本字符串。

            b. ENUMERATED 

            c. ID

            d. ENTITY(實體)

 

    (3)屬性值類型-ENUMERATED

 

          屬性的類型能夠是一組取值的列表,在 XML 文件中設置的屬性值只能是這個列表中的某個值(枚舉)

 

            Demo樣例:

 

                <?xml version = "1.0" encoding="GB2312" standalone="yes"?>

 

                <!DOCTYPE 購物籃 [

 

                      <!ELEMENT 肉 EMPTY>

 

                      <!ATTLIST 肉 品種 ( 雞肉 | 牛肉 | 豬肉 | 魚肉 ) "雞肉">

 

                ]> 

 

                <購物籃>

 

                      <肉 品種="魚肉"/>

 

                      <肉 品種="牛肉"/>

 

                      <肉/>    ---//備註:此處隱含默認屬性值:「雞肉」

 

                </購物籃>

 

 

 

    (4)屬性值類型- ID

 

           a. 表示屬性的設置值爲一個惟一值。

 

           b. ID 屬性的值只能由字母,下劃線開始,不能出現空白字符。

 

        【備註:開發時,建議ID的值「字母+數字」的形式出現,絕對不能單獨出現數字開頭的形式。】

 

        Demo樣例: 

 

            <?xml version = "1.0" encoding="GB2312" ?> 

 

            <!DOCTYPE 聯繫人列表[

 

                  <!ELEMENT 聯繫人列表 ANY>

 

                  <!ELEMENT 聯繫人(姓名,EMAIL)>

 

                  <!ELEMENT 姓名(#PCDATA)>

 

                  <!ELEMENT EMAIL(#PCDATA)>

 

                  <!ATTLIST 聯繫人 編號 ID #REQUIRED>

 

            ]> 

 

            <聯繫人列表>

 

                  <聯繫人 編號="1">

 

                        <姓名>張三</姓名>

 

                        <EMAIL>zhang@163.com</EMAIL>

 

                        </聯繫人>

 

                  <聯繫人 編號="2">

 

                        <姓名>李四</姓名>

 

                        <EMAIL>li@163.com</EMAIL>

 

                  </聯繫人>

 

            </聯繫人列表>

 

 

 

    (5)"設置說明"可賦值 的類型:    

 

            a. #REQUIRED:必須設置該屬性

            b. #IMPLIED:能夠設置也能夠不設置 

            c. #FIXED:說明該屬性的取值固定爲一個值,在 XML 文件中不能爲該屬性設置其它值。但須要爲該屬性提供這個值。

            d. 默認值:在 XML 中能夠設置該值也能夠不設置該屬性值。若沒設置則使用默認值。   

 

                Demo舉例:

 

                      <!ATTLIST 頁面做者 

 

                           姓名 CDATA #IMPLIED 

 

                           年齡 CDATA #IMPLIED 

 

                           聯繫信息 CDATA #REQUIRED 

 

                           網站職務 CDATA #FIXED "頁面做者" 

 

                           我的愛好 CDATA "上網"

 

                       > 

 

    

 


 

 

 

九、DTD 的語法細節-  實體定義  

 

    概念:實體用於爲一段內容建立一個別名,之後在XML文檔中就可使用別名引用這段內容了。

 

    語法:在DTD定義中,一條<!ENTITY …>語句用於定義一個實體。

 

    類型:實體可分爲兩種類型:引用實體和參數實體。

 

     

 

    (1)實體定義-引用實體

 

        引用實體主要在 XML 文檔中被應用

 

        a. 語法格式:

 

            <!ENTITY 實體名稱 「實體內容」 >:直接轉變成實體內容

 

        b. 引用方式: &實體名稱;

 

            Demo舉例:

 

              <!ENTITY copyright 「I am a programmer"> 

 

               ……

 

               &copyright;

 

 

 

    (2)實體定義-  參數實體  

 

        參數實體被 DTD 文件自身使用

 

        a. 語法格式:

 

           <!ENTITY % 實體名稱 "實體內容" >

 

        b. 引用方式:   %實體名稱;

 

        Demo舉例1:

 

           <!ENTITY % TAG_NAMES "姓名 | EMAIL | 電話 | 地址">

 

         

 

            <!ELEMENT 我的信息 (%TAG_NAMES; | 生日)>

 

           <!ELEMENT 客戶信息 (%TAG_NAMES; | 公司名)>

 

        

 

        Demo舉例2:

 

            <!ENTITY % common.attributes

 

               " id ID #IMPLIED 

 

              account CDATA #REQUIRED "

 

            >

 

            ...

 

            <!ATTLIST purchaseOrder %common.attributes;>

 

            <!ATTLIST item %common.attributes;>

 


 

 十、附件資料下載

 

        請下載附件資料DTD.chm  進行學習。尤爲是在開發中須要查詢也很方便。

相關文章
相關標籤/搜索