一、XML文件概述
1、XML文件的特点:
①严谨
②严格区分大小写
③标签必须闭合
④只能有一个根标签
⑤必须有严格的文档声明:
<?xml version="1.0" charset="utf-8"?>
2、XML与HTML文件的关系:都是w3c发布的标准
①html是预定义的标签,xml是自定义的标签
②xml和html文件都是纯文本文件,支持跨平台,跨软件等
③xml严格区分大小写,html不区分大小写
技巧
:快速检查xml文件格式是否正确的方法,用浏览器能正确打开就没问题,否则就有问题
二、XML文档约束
1、DTD(Document Type Definition)约束
用来定义XML文件的格式:比如根节点是什么,子节点是什么,有哪些属性和子节点等
①DTD的分类:
②DTD的元素定义:<!ELEMENT 元素名 元素描述>
a、定义名为name的标签元素,内容为文本类型
<!ELEMENT name (#PCDATA)>
b、定义名为student的标签元素,内容依次为name、age、sex标签
<!ELEMENT student (name,age,sex)>
c、定义名为student的元素,内容任意
<!ELEMENT student ANY>
d、定义名为student的元素,不能有内容,即空元素,注意空元素是可以有属性的
<!ELEMENT student EMPTY>
e、子元素出现的次数的表示:与正则表达式类似
f、枚举类型子元素:不能同时出现两个子元素,只能任选其一
示例1:student的子元素为name、age、sex的其中一个,必须且仅能选择其中的一类
<!ELEMENT student (name|age|sex)>
示例2:枚举也可以使用*、+或?来指定个数
<!ELEMENT men (girlfriend*|wife?)>
③DTD的元素属性定义:<!ATTLIST 元素名 属性名 属性类型 必要性(可无) 默认值(可无)>
示例:给student元素定义属性number,类型为文本,该属性必须有
<!ATTLIST student number CDATA #REQUIRED>
属性设置说明:
#REQUIRED:必要属性
#IMPLIED:可选属性
#FIXED:使用#FIXED定义属性时,在#FIXED后要跟上匹配的值,表示该属性的值只能从这取
<!ATTLIST sender company CDATA #FIXED "Microsoft">
属性值的类型定义:
完整的dtd文档示例:
④DTD的引入:将DTD的引入放在文档声明后,根元素外
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
a、公共DTD的引入:students是dtd文件的名称,PUBLIC是dtd文件的类型
<!DOCTYPE students PUBLIC "描述信息,如版本、作者、语言等" "DTD的网络路径">
b、系统DTD的引入:students是dtd文件的名称,SYSTEM是dtd文件的类型
<!DOCTYPE students SYSTEM "dtd文件的本机路径">
2、Schema约束
Schema文档的格式和xml文档相同,但Schema文档的扩展名为xsd,而不是xml。详情参看:Schema教程
三、XML文件的解析
参考:Java中XML的四种解析方式