11,09,26
课堂主要内容:
介绍XML及简单使用
1、什么是 XML?
XML 指可扩展标记语言(EXtensible Markup Language)
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准
2、XML文档规则
XML文档的分类
(1)格式不良好(malformed)的xml文档:完全没有遵守xml文的基本规范的xml文档。
(2)格式良好(well-formed)的但无效的xml文档: 遵守xml文的基本规范,但没有使用dtd或schema定义语义约束的xml文档。
(3)有效(valid)的xml文档:遵守xml文的基本规范,并使用dtd或schema定义语义约束,而且也完全遵守了dtd或schema定义语义约束的xml文档。
3、XML语法
一个XML文件分为如下几部分内容:
文档声明
元素
属性
注释
CDATA区 、特殊字符
处理指令(processing instruction)
4、XML语法——文档声明
(1)在编写XML文档时,需要先使用文档声明,声明XML文档的类型。
最简单的声明语法:
<?xml version="1.0" ?>
(2)用encoding属性说明文档的字符编码:
<?xml version="1.0" encoding="GB2312" ?>
(3)用standalone属性说明文档是否独立:
<?xml version="1.0" encoding="GB2312" standalone="yes" ?>
(4)常见错误,见PPT下面的备注区
<学生>
<学号>101307109/<学号>
<姓名>多多</姓名>
</学生>
树状图描述的是数据和数据之间的关联。交给XML文档来处理。
配置描述:
struts-config.xml
hibernat.cfg.xml
xxxxx.hbm.xml
能够简化数据交换的过程
在linux平台下——>Window平台个人笔记本电脑
具有很好的跨平台性
XML常见应用
创建一个config.xml
<config>
<A>
<A1></A1>
<A2></A2>
</A>
<B>
<B1></B1>
<B2></B2>
</B>
</config>
XML文档规则
1、XML文档的分类
XML语法:
<起始标记>数据</终止标记> //成对出现
非空元素:一定是成对的标记,而且标记里面可以包含直接数据,也可以是子元素
空元素:如果是成对标记的话,中间没有任何数据。单标记标<标记 属性="给属性赋值"/>记都要关闭
学生列表
学生1 学生2
学号 姓名 年龄 班级 学号 姓名 年龄 班级
创建MyXml.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--学生的列表信息--> //注释里面嵌套的注释,是错误的。注释之前不能有注释
<学生列表>
<学生>
<学号>101708111</学号>
<姓名>张三</姓名>
<班级>10java-4</班级>
</学生>
<学生>
<学号>101708222</学号> //子标记
<姓名>李四</姓名>
<班级>10java-5</班级>
</学生>
<学生 学号="102111002 姓名="王五"/>
</学生列表>
<文档 最后修改日期="2011/09/24">
</文档>
注释 <!--注释-->
在标签中出现< >都是不正确的
转义字符
详见老师上课的PPT
XML约束概述
<!DOCTYPE 学生列表 [
<!ELEMENT 学生列表(学生)*>
]>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 学生列表 [
<!ELEMENT 学生列表(学生)*>
]>
<!--学生的列表信息--> //注释里面嵌套的注释,是错误的。注释之前不能有注释
<学生列表>
<学生>
<学号>101708111</学号>
<姓名>张三</姓名>
<班级>10java-4</班级>
</学生>
<学生>
<学号>101708222</学号> //子标记
<姓名>李四</姓名>
<班级>10java-5</班级>
</学生>
<学生 学号="102111002 姓名="王五"/>
</学生列表>
XML约束
<!DOCTYPE 根标记名[
]>
<!DOCTYPE 根标记名 SYSTEM "dtd文件的名字">
引入公共的dtd文件
<!DOCTYPE 根标记名 PUBLIC"-//拥有者//发布的内容//语言" "dtd文件的名字">
<!ELEMENT 学生列表(学生) *> //*代表0个或多个
<!ELEMENT 学生 (学号,姓名,性别,班级*)> //学生标签里只能包括这三个子标签,顺序必须和这个一样 。班级*,
*号表示0gj次或多次
+号表示至少出现一次
?号表示0次或1次
<!ELEMENT 学号 (#PCDATA)> //里面不能在包含子元素
<!ELEMENT 姓名 ANY> //ANY没有限定元素的内容,可以是任意的类型
<!ELEMENT 类别(高职|普高)> //表示取值是一种互斥的形式 。对子标签的限制2