Java SE之XML<一>XML文档规约

[文档整理系列] 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>

猜你喜欢

转载自www.cnblogs.com/johnnyzen/p/9277857.html
今日推荐