<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 14, 文章 - 0, 評論 - 15, 引用 - 0
    數據加載中……

    學習java&XML第二天熟悉一下DTD

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

    第一點要注意的:DTD中的關鍵字必須全部大寫!

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

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

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

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

    引用的格式是:<!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名稱" "外部DTD的URL">
    其中DTD名稱解釋為:
    這個DTD標識的命名規則和XML文件的命名規則稍有不同。具體地說,DTD名稱只能包含字母、數字、空格和下面的符號:_%$#@()+:=/!*;?。同時,DTD名稱還必須符合一些標準的規定。例如,ISO標準的DTD以“ISO”三個字母開頭;被改進的非ISO標準的DTD以加號“+”開頭;未被改進的非ISO標準的DTD以減號“-”開頭。
    所以說struts的配置文件就是“未被改進的非ISO標準的DTD文檔”

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

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

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

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

    posted on 2005-03-08 14:23 Boris-Java 閱讀(683) 評論(0)  編輯  收藏 所屬分類: java&xml

    主站蜘蛛池模板: 中文日本免费高清| 欧洲乱码伦视频免费国产| 久操视频在线免费观看| 久久亚洲色一区二区三区| 一级A毛片免费观看久久精品 | 午夜亚洲国产精品福利| 在线观看无码的免费网站| 亚洲一区二区三区写真| 在线精品免费视频无码的| 亚洲AV无码专区国产乱码不卡| 日韩特黄特色大片免费视频| 青青青亚洲精品国产| 亚洲av日韩av欧v在线天堂| 一级特黄录像视频免费| 亚洲欧洲日产国码无码久久99| 国产成人免费视频| 亚洲欧洲国产经精品香蕉网| 国产美女在线精品免费观看| 亚洲精品国产精品| 亚洲人成无码网站久久99热国产| 中文字幕av免费专区| 亚洲美女激情视频| 女人18一级毛片免费观看| 免费国产va在线观看| 亚洲爆乳精品无码一区二区三区 | 香蕉97超级碰碰碰免费公| 亚洲最大无码中文字幕| 亚洲 小说区 图片区 都市| 91在线视频免费观看| 亚洲六月丁香六月婷婷色伊人 | 好爽…又高潮了免费毛片| 国产精品亚洲二区在线| 久久久久亚洲AV成人无码 | 亚洲?V无码乱码国产精品| 无码av免费一区二区三区| 亚洲免费综合色在线视频| 国产亚洲AV无码AV男人的天堂| 国产福利视精品永久免费| 免费无码专区毛片高潮喷水| 亚洲嫩模在线观看| 亚洲国产a级视频|