DTD约束
1、XML DTD
1、什么是DTD?
DTD(Document Type Definition)文档类型定义
作用:简单来说就是一个约束,约束XML的书写规范
2、什么是XML
XML(eXtensible Markup Language)可扩展性标记语言
作用:用来传输数据和存储数据(配置文件、数据交换)。
课外:(“树结构” 概念)
3、XML的两种文档约束
DTD 和 Schema(不常用)。
4、XML格式要求(合法XML)
4.1)有且只有一个根节点;
4.2)由开始标签和结束标签组成;
4.3)XML标签区分大小写;
4.4)正确嵌套标签;
4.5)属性值须加引号;
4.6)特殊符号转义
&(逻辑与) --> &
>(大于) --> >
<(小于) --> <
‘(单引号) --> '
“(双引号) --> "
4.7)XML中的空格会做保留,算一个元素。
5、▲使用DTD
5.1 在XML中加入DTD申明
1)内部申明:
<!DOCTYPE 根节点 [
……
]>
2)外部申明:
<!DOCTYPE 文档根节点 SYSTEM “DTD文件名”>
5.2 DTD语法
元素定义、属性定义、实体定义(自学)。
1)元素定义语法(DTD对元素的限制)
▲基本语法:
<!ELEMENT 元素名称 元素类型>
▲元素类型:
EMPTY -表示该元素为空元素
(#PCDATA) -表示只有PCDATA的元素,不做延伸,放具体的数据
(e1,e2,e3……) -表示该元素下带有子元素,分别是e1,e2,注意顺序
ANY -表示没有任何内容的元素
(元素名) -表示只出现一次的元素
▲元素限制:
,(顺序)
|(或)
*(0次或多次)
+(1次或多次)
?(0次或1次)
2)属性定义语法(DTD对属性的限制)
▲基本语法:
<!ATTLIST 元素名称
属性名称1 属性类型 设置说明
属性名称2 属性类型 设置说明
……
>
▲属性类型:
CDATA 表示属性值为字符串
(男|女) "男" 表示只能填男或女,默认男
ID 值为唯一的id
ENTITY 表示实体,自学
▲设置说明:
#REQUIRED 必须设置该属性
#IMPLIED 可以设置也可不设置
#FIXED 说明该属性的取值固定为一个值,需多测试"默认值"
2、▲XML解析*
【.properties 和 .xml (两个配置文件)】
1、java中配置文件的三种配置位置与读取方式
1.1位置:
src根目录下:
当前类.class.getResourceAsStream("/config.(properties或xml)");
同包,跟读取的类同包:
当前类.class.getResourceAsStream("config.(properties或xml)");
WEB-INF(或其子目录下):
ServletContext sc= this.getServletContext();
InputStream sc.getResourceAsStream("/WEB-INF/config3.properties");
2、▲dom4j + xpath 解析xml文件
Xml解析一般分两种:
一个是自带源生态的(效率低)
另一个是第三方读取解析(dom4j)
方法:
document.selectNodes(xpath);
查一组 例如:document.selectNodes("/persons/person");
document.selectSingleNode(xpath); 查单个
核心类:
SAXReader:用于加载流,读取xml文件
Document:文档,使xml文件变成一个文档
xpath:相当于数据库的select语句一样
/ 定位路径
@ 属性
案例: