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