• 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>
    
  • 相关阅读:
    LightOJ 1094
    hdu 2586
    hdu 5234
    hdu 2955
    LightOJ 1030 数学期望
    poj 1273
    CodeIgniter学习笔记(十五)——CI中的Session
    CodeIgniter学习笔记(十四)——CI中的文件上传
    CodeIgniter学习笔记(十三)——CI中的分页
    CodeIgniter学习笔记(十二)——CI中的路由
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/9277857.html
Copyright © 2020-2023  润新知