1. 程式人生 > >Java SE之XML<一>XML文檔規約

Java SE之XML<一>XML文檔規約

day order 書寫 programs 自身 分隔 oot class item

[文檔整理系列] Java SE之XML<一>XML文檔規約

1.xml文檔引用:
   
   1.外部私有DTD:
     <!DOCTYPE rootNodeName SYSTEM "uri.dtd">
     (在xml文件中聲明,帶關鍵字SYSTEM)
   
   2.外部公共文件時:
      <!DOCTYPE rootNode名稱 PUBLIC "DTD名稱" "uri.dtd">
     (在xml文件中聲明,帶關鍵字PUBLIC)  
   
   3.內部引用:
     <!DOCTYPE rootNodeName [declarationsContent] >
     (在xml文件中聲明)

======================

2.語法分類:【元素定義,屬性定義,實體定義】

元素定義 
   1.格式:<!ELEMENT 元素名稱 元素類型>

   2.元素類型可以是元素內容或類型:
       1.如果是元素內容:【需要用括號括起來】
          Eg:<!ELEMENT 書架 (書名,作者,售價)>
             <!ELEMENT 書架 (#PCDATA)>
       
       2.如果是元素類型:【直接書寫】
         類型有如下:
         EMPTY: 用於定義空類型,如<br/><hr/>  
         ANY:  表示元素內容可以為任意值 
         Eg:<!ELEMENT 聯系人列表 ANY>
       
       3.元素內容可以使用如下方式,描述內容的組成關系:
          
            1.用逗號隔開,表示內容的出現順序必須與聲明時一致
              Eg:<!ELEMENT myBookElement (title,name,email)>
          
            2.用|分隔,表示任選其一,即最多只能出現一個
              Eg:<!ELEMENT myBookElement (title|name|email)>

       4.在元素中也可以使用+,*,?等符號表示元素出現的次數

            1.+ :一次or多次 (書+)

            2.?:0次or1次(書?)

            3.* :0次or多次 (書*)

            4.(無符號):必須出現一次(書)
       
       5.還可使用圓括號()批量設置
             
            Eg:<!ELEMENT myBookElement ((title*,author?,email)*|comment)>

屬性定義
    1.格式:
      <!ATTLIST 元素名
               屬性名1  屬性值類型   設置說明
               屬性名2  屬性值類型   設置說明
               屬性名3  屬性值類型   設置說明
               ...
      >
    2.Eg:
      DTD屬性聲明:
        <!ATTLIST 商品
                類別  CDATA  #REQUIRED
                顏色  CDATA  #IMPLIED
        >
      對應XML文件:
        <商品 類別="服裝" 顏色="黃色">...</商品>   
    3.屬性--設置說明
        
        1.#REQUIRED :必須設置該屬性

        2.#IMPLIED: 可以設置也可以不設置

        3.#FIXED: 說明該屬性的取值固定為一個值,在XML文件中不能為該屬性設置其他值。
         但需要為該屬性提供這個值。
          該屬性值,不可更改,在使用該標簽時,可以使用本屬性,也可以不適用本屬性,都將不改變屬性值。

        4.直接使用默認值。在XML中可以設置該值,也可以不設置該屬性值。

          Eg:
            <!ATTLIST 頁面作者
                姓名  CDATA #IMPLIED
                年齡  CDATA #IMPLIED
              聯系信息CDATA #REQUIRED            	
              網站職務CDATA #FIXED "頁面作者"
              個人愛好CDATA "上網"
            >   
    4.常用屬性值類型:
        CDATA 表示屬性值為普通文本字符串

        ENUMERATED

        ID  1.屬性值唯一
            2.屬性的值只能由字母、下劃線開頭,且不能出現空白字符

        ENTITY(實體)  

實體定義
    1.定義:實體用於為一段內容創建一個別名,以後再XML文檔中就可以使用別名來引用這段內容了。 

    2.在DTD定義中,一條<!ENTITY...>語句用於定義一個實體

    3.實體類型:引用實體和參數實體
        引用實體:
                1.引用實體主要在XML文檔中被應用

                2.語法格式:<!ENTITY 實體名稱 "實體內容" >: 直接轉變成實體內容

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

                4.Eg:<!ENTITY copyright "我是一名程序員">
                     ...
                     ?right;
        
        參數實體:
                 1.參數實體被DTD實體自身引用

                 2.語法格式:
                     <!ENTITY % 實體名稱 "實體內容" >

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

                 4.Eg:
                      <!ENTITY Tag_Name 姓名 |EMAIL |電話|地址>
                      <!ENTITY 個人信息 (%Tag_Name; |生日)>
                      <!ENTITY 客戶信息 (%Tag_Name; |公司名)>

                    Eg:
                       <!ENTITY % common.attributes   "id     ID    #IMPLIED   account CDATA    #REQUIRED">
                                       標簽名      屬性名1 屬性類型  設置說明  屬性名2 屬性類型 設置說明
                       ...
                       <!ATTLIST purchaseOrder %common.attributes;>
                       <!ATTLIST item %common.attributes;>
==========================
示例1:電視節目單
<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>

<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)> 
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #REQUIRED>
<!ATTLIST CHANNEL CHAN CDATA #REQUIRED>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE RATING CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>
--------------------
<TVSCHEDULE NAME="重慶衛視目錄">
    <CHANNEL CHAN="少兒頻道">
        <BANNER>
            爸爸來了
        </BANNER>
        <DAY>
            <DATE>
                2017-02-07
            </DATE>
            <HOLIDAY>
            	重陽節
            </HOLIDAY>
        </DAY>
    </CHANNEL>
    <CHANNEL CHAN="嬰兒頻道">
        <BANNER>
            媽媽來了
        </BANNER>
        <DAY>
        	<DATE>
        		2014-05-25
        	</DATE>
        	<PROGRAMSLOT VTR="我也不知道" >
        		<TIME>23:02</TIME>
        		<TITLE RATING="23%" LANGUAGE="Chinese" >躲藏的貓咪</TITLE>
        		<DESCRIPTION>講述一只可愛的貓貓的故事</DESCRIPTION>
        	</PROGRAMSLOT>
        </DAY>
    </CHANNEL>
</TVSCHEDULE>

Java SE之XML<一>XML文檔規約