隨筆 - 14, 文章 - 0, 評(píng)論 - 15, 引用 - 0
          數(shù)據(jù)加載中……

          學(xué)習(xí)java&XML第二天熟悉一下DTD

          DTD(Document Type Definition)文件類(lèi)型描述

          第一點(diǎn)要注意的:DTD中的關(guān)鍵字必須全部大寫(xiě)!

          一、DTD的位置
                
          DTD可以放在xml文檔里面:

          出自《XML入門(mén)》
          <?xml version = "1.0" encoding="GB2312" standalone = "yes"?>
          <!DOCTYPE 聯(lián)系人列表[
                  <!ELEMENT 聯(lián)系人列表 (聯(lián)系人)*
          >
                  
          <!ELEMENT 聯(lián)系人 (姓名,ID,公司,EMAIL,電話,地址)>
                  
          <!ELEMENT 地址 (街道,城市,省份)>
                  
          <!ELEMENT 姓名 (#PCDATA)>
                  
          <!ELEMENT ID (#PCDATA)>
                  
          <!ELEMENT 公司 (#PCDATA)>
                  
          <!ELEMENT EMAIL (#PCDATA)>
                  
          <!ELEMENT 電話 (#PCDATA)>
                  
          <!ELEMENT 街道 (#PCDATA)>
                  
          <!ELEMENT 城市 (#PCDATA)>
                  
          <!ELEMENT 省份 (#PCDATA)>
              ]>
          <聯(lián)系人列表>
          ...................................

          放在里面的時(shí)候,應(yīng)該注意“standalone = "yes"”
          也可以放在外面,放在外面有兩種形式,一種是引用本地文件,如:

          <?xml version = "1.0" encoding="GB2312" standalone = "no"?>
          <!DOCTYPE 聯(lián)系人列表 SYSTEM "fclml.dtd">
          <聯(lián)系人列表> 
          ..................

          引用的格式是:<!DOCTYPE 根元素名 SYSTEM "外部DTD文件的URL">
          另外一種是引用公共的文檔定義,如:
          <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
          格式為:<!DOCTYPE 根元素 PUBLIC "DTD名稱(chēng)" "外部DTD的URL">
          其中DTD名稱(chēng)解釋為:
          這個(gè)DTD標(biāo)識(shí)的命名規(guī)則和XML文件的命名規(guī)則稍有不同。具體地說(shuō),DTD名稱(chēng)只能包含字母、數(shù)字、空格和下面的符號(hào):_%$#@()+:=/!*;?。同時(shí),DTD名稱(chēng)還必須符合一些標(biāo)準(zhǔn)的規(guī)定。例如,ISO標(biāo)準(zhǔn)的DTD以“ISO”三個(gè)字母開(kāi)頭;被改進(jìn)的非ISO標(biāo)準(zhǔn)的DTD以加號(hào)“+”開(kāi)頭;未被改進(jìn)的非ISO標(biāo)準(zhǔn)的DTD以減號(hào)“-”開(kāi)頭。
          所以說(shuō)struts的配置文件就是“未被改進(jìn)的非ISO標(biāo)準(zhǔn)的DTD文檔”

          二、DTD的內(nèi)容
          DTD文檔的內(nèi)容總結(jié)下來(lái)有幾個(gè)比較重要也比較常用的:參數(shù)實(shí)體定義、元素定義和屬性定義
          1、參數(shù)實(shí)體定義
             實(shí)體實(shí)際上在XML當(dāng)中充當(dāng)宏定義或者別名之類(lèi)的意思,也可以理解成public static String......
             參數(shù)實(shí)體是專(zhuān)門(mén)用在DTD當(dāng)中的,你可以在下面兩項(xiàng)元素定義和屬性定義中引用參數(shù)實(shí)體。
             其定義方式如下:
             <!ENTITY % 實(shí)體名 "實(shí)體內(nèi)容"> 注意,在XML中的實(shí)體定義是沒(méi)有%的
             或者是:
             <!ENTITY % 實(shí)體名 SYSTEM "外部文件名">
             引用方式:
             %實(shí)體名
              例子:
             <!ENTITY % Boolean "(true|false|yes|no)">表示定義了一個(gè)Boolean 的參數(shù)實(shí)體,值是"(true|false|yes|no)"
             在struts的配置文件的DTD中有如下描述:
             <!ATTLIST form-bean      dynamic        %Boolean;       #IMPLIED>
             也就定義了form-bean這個(gè)元素的dynamic屬性可以取得值是true、false、yes、no其中之一。

          2、元素定義
             用來(lái)定義元素的格式以及元素的子孫等。
             定義形式:    
             <!ELEMENT 元素名 元素內(nèi)容描述>
             元素定義這里由于篇幅有限,僅列幾個(gè)例子
                1、<!ELEMENT 聯(lián)系人列表 ANY>表示聯(lián)系人列表這個(gè)元素的格式及其子孫都不受限制。
                2、<!ELEMENT 姓名(#PCDATA)>表示姓名這個(gè)元素只能包含文本數(shù)據(jù)
                3、<!ELEMENT 聯(lián)系人(姓名 EMAIL)>表示聯(lián)系人這個(gè)元素只能包含姓名和EMAIL兩種子孫,順序不限,并且姓名只能由一個(gè),EMAIL也只能由一個(gè)。
                4、<!ELEMENT 聯(lián)系人(姓名,EMAIL)>表示聯(lián)系人這個(gè)元素只能包含姓名和EMAIL兩種子孫,有順序的限制,并且姓名只能由一個(gè),EMAIL也只能由一個(gè)。
                5、<!ELEMENT 聯(lián)系人(姓名,EMAIL+)>表示聯(lián)系人必須有且僅有一個(gè)姓名子孫,有一個(gè)到多個(gè)EMAIL子孫,其中,如果+換作*,則表示零個(gè)或者多個(gè)。
                6、<!ELEMENT 聯(lián)系人(姓名,EMAIL)+>表示聯(lián)系人有一組到多組子孫,每組中有且僅有一對(duì)姓名和EMAIL
                7、<!ELEMENT 聯(lián)系人(姓名,(電話|EMAIL))>表示聯(lián)系人有一組到多組子孫,每組中第一個(gè)元素一定是姓名,第二個(gè)元素要么是電話,要么是EMAIL,兩者選一個(gè)。
                8、<!ELEMENT 聯(lián)系人 EMPTY>聯(lián)系人這個(gè)元素不包含任何子孫,也不包含文本。

          3、屬性定義
                格式:
          <!ATTLIST 元素名 (屬性名 屬性類(lèi)型 缺省值)*>
                例子:
                
          1、<!ATTLIST 頁(yè)面作者
                  姓名 #CDATA #IMPLIED
                  年齡 #CDATA #IMPLIED
                  聯(lián)系信息 #CDATA #REQUIRED
                  網(wǎng)站職務(wù) #CDATA #FIXED "頁(yè)面作者"
                  個(gè)人愛(ài)好 #CDATA "上網(wǎng)">
                其中,定義了頁(yè)面作者這個(gè)元素的屬性可以有“姓名”,“年齡”,“聯(lián)系信息”,“網(wǎng)站職務(wù)”和“個(gè)人愛(ài)好”
                并且,姓名和年齡是純文本,可以沒(méi)有,聯(lián)系信息必須有,網(wǎng)站職務(wù)一定是“頁(yè)面作者”,個(gè)人愛(ài)好如果不填,則默認(rèn)是上網(wǎng)。

                2、<!ATTLIST 肉 類(lèi)型( 雞肉 | 牛肉 | 豬肉 | 魚(yú)肉 ) "雞肉">元素肉可以有“類(lèi)型”屬性,類(lèi)型屬性可以選擇 雞肉 | 牛肉 | 豬肉 | 魚(yú)肉其中一個(gè),默認(rèn)是“雞肉”
                3、<!ATTLIST 聯(lián)系人 編號(hào) ID #REQUIRED>聯(lián)系人元素有且必須有編號(hào)屬性,其類(lèi)型是ID型的,ID型或者是IDREF型的屬性值必須是一個(gè)有效的XML名稱(chēng),它由字母、數(shù)字或下劃線開(kāi)始,名字中不能出現(xiàn)空白符。類(lèi)似Html中的ID。
                4、另外類(lèi)型NMTOKEN和NMTOKENS還有NOTATION類(lèi)型我還不是太明白,那位明白的不妨給出^_^。

          posted @ 2005-03-08 14:23 Boris-Java 閱讀(686) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共14頁(yè): First 上一頁(yè) 6 7 8 9 10 11 12 13 14 下一頁(yè) 
          主站蜘蛛池模板: 兴山县| 瓦房店市| 清镇市| 阿拉善盟| 阿克| 长沙县| 东源县| 县级市| 山西省| 鄂尔多斯市| 湾仔区| 安顺市| 虹口区| 石柱| 洱源县| 沾化县| 红安县| 新民市| 西乡县| 淮南市| 大洼县| 吉水县| 维西| 平南县| 剑阁县| 泉州市| 仪陇县| 永川市| 大宁县| 泰和县| 九江县| 临沭县| 淮阳县| 永年县| 呼玛县| 成都市| 建水县| 黔西县| 兴城市| 洛川县| 通城县|