XML简介
XML即可扩展的标记语言。因此该语言中所有的标签都是没有预先定义的,开发者可以自己随意的指定。
目前为止所有的标记的语言都属于开源的语言。由W3C组织进行一个基本的维护。
因此大家学习这些语言的时候应该参考W3C公布的文档。
XML作用
1.可以用作软件的配置文件。
2.可以实现独立平台的数据传输。 C à XML à Java 天气预报
3.Web Service。
4.可以描述带关系的数据。
XML体验
XML文件其实在实际的开发中可以帮助开发者进行描述一些带关系的数据。
以上的数据需要XML进行存储。
1. 编写一个city.xml文件如下
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<中国>
<北京></北京>
<上海></上海>
<广州>
<天河区></天河区>
<花都区></花都区>
</广州>
</中国>
另存为为UTF-8的编码方式。
2. 使用浏览器打开该应用文件
至此XML的体验就完成了。因此需要快速的掌握XML的语法基础。
XML语法
如果要掌握XML语言的语法结构那么可以从以下几个方面进行入手:
u 声明指令
语法:
<?xml version=”” encoding=”” standalone=”” ?>
xml 是一个xml文件的指令名通知解析器以XML的方式进行解析
version 指定XML的版本,目前只能是1.0
encoding 指定XML文件的被解析时候的解码方式,一般的值是GBK或UTF-8
standalone 指定该文件时否是独立文件。默认值是yes,也可是no
细节体验:
- <>和?号之间不能有任何字符包含空格
- ?和xml指令名之间不能有任何的字符包含空格
- 版本号只能是1.0
- 编码和解码要一致
- 三个属性出现的顺序是固定的;【version / encoding / standalone】
u 元素
语法:
<元素名></元素名>
元素名的组成:
字母、数组、下划线和-
不能以数字开头
元素的分类:
根元素 一个XML文件中只能有一个根元素包含其他元素
<a></a> 带标签体的元素
<br/> 没有带标签体的元素,空元素
使用细节:
- XML是严格区分大小写的,对于元素、属性以及其他的指令。
- XML的元素是可以相互嵌套的
- 元素是先开始的后结束
u 属性
语法:
<元素名 属性名1=属性值1 属性名2=属性值2 …>
属性名的约束和元素的约束一致
属性值在设置的时候需要使用单引号或双引号引起来。
举例1:实现一个书的isbn属性。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<books>
<book isbn="001">
<name>XML基础教程</name>
</book>
</books>
属性只是为了给一个元素添加一个标识,那么该标识使用子元素也可以。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<books>
<book isbn="001">
<name>XML基础教程</name>
</book>
<book>
<isbn>002</isbn> à 子元素等价于属性
<name>XML基础教程</name>
</book>
</books>
u 特殊字符和CDATA区域
如果在编写XML文件的时候发现属性值或元素的标签体内容要输出具有特殊含义的字符,那么必须使用转义字符(实体)。
常用的转义字符
但是如果在标签体中大量的出现特殊字符,那么如果要使用转移字符那么就太繁琐了。
解决方案:CDATA区域
语法:
<![CDATA[
// 需要转移的大量字符数据
]]>
举例1:将以下的数据进行快速的转义。
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<books>
<book isbn="00"1">
<name>XML基础教程</name>
</book>
<book>
<isbn>002</isbn>
<name>XML基础教程</name>
<content>
<![CDATA[
<html>
<head>
</head>
<body>
</body>
</html>
]]>
</content>
</book>
</books>
u 注释
语言 |
注释 |
HTML |
<!-- --> |
CSS |
/* */ |
JavaScript |
// /* */ |
Java |
// /* */ /** */ |
XML |
<!-- --> |
JSP |
<%-- --%> |
举例1:给xml文件添加注释。
<!--XML文件声明-->
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!--唯一的一个根元素-->
<books>
<!--一个book代表一本书-->
<book isbn="001">
<name>XML基础教程</name>
</book>
</books>
运行结果
u 样式指令
如果开发者希望浏览器在解析的XML数据的时候以指定的样式显示XML数据,那么就需要使用样式指令来设置XML的样式文件。
语法:
<?xml-stylesheet type=”text/css” href=”路径”?>
1. 编写一个books.xml文件
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<books>
<book>
<id>0001</id>
<name>XML基础教程</name>
<author>焦宁波</author>
</book>
<book>
<id>0002</id>
<name>JavaEE高级教程</name>
<author>焦宁波</author>
</book>
</books>
2. 编写一个CSS样式文件
如果开发者没有编写指定的CSS文件但是已经使用了该指令引入的样式,那么浏览器会使用自身的默认的样式来显示XML数据。
默认的结果下:
编辑css样式如下
book{
background:#ff0000;
display:block;
margin-bottom:10px;
width:100px;
}
id,name,author{
display:block;
background:pink;
color:blue;
}
需要另存为为UTF-8。
运行结果
格式良好的XML和有效的XML文档
格式良好的XML即满足基本的XML语法的XML文档称之为格式良好的XML文档。
有效的XML文档即该文件的格式需要满足一定的约束文件。
约束文档是一个要制定约束规则的文件。
被约束文档是一个需要被约束的XML文件。
如果想使用约束文件约束被约束文件那么就需要在被约束文件中引入约束文件。
思考:
格式良好的XML不一定是有效的XML文档。
有效的XML文档一定是格式良好的XML文档。
XML约束技术
W3C提供了常用的约束技术来实现XML文档的约束。常用的技术有DTD(W3C推荐的官方约束标准技术),但是该技术已经过时了,所以民间有另一个约束技术Schema(民间标准)。
DTD约束
DTD即Document Type Definded(文档类型定义)。该技术所形成的约束文件必须以.dtd进行结尾,该文件并不是一个XML文件。是一个普通的文本文件。
u 体验
- 编写一个测试的xml文件test.xml
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
</书>
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
- 编写一个约束文件制定要约束的规则test.dtd
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
dtd文件约束的被约束文件编码是UTF-8,因此需要将约束文件另存为为UTF-8。
3. 在被约束文件中引入约束文件进行语法的约束
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--引入约束文件-->
<!DOCTYPE 书架 SYSTEM "test.dtd">
<书架>
<书>
<书名>Java就业培训教程</书名>
<作者>张孝祥</作者>
<售价>39.00元</售价>
</书>
<书>
<书名>JavaScript网页开发</书名>
<作者>张孝祥</作者>
<售价>28.00元</售价>
</书>
</书架>
4. 使用浏览器进行查看是否满足指定的约束
浏览器虽然提供了查看一个XML文件是否满足指定的约束,但是开发者需要使用程序打开该功能。HTML+CSS+JavaScript
编写一个页面进行XML的有效性校验validate.html
<script>
// 获取校验器对象
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
// 设置是否是异步
xmlDoc.async="false"
// 打开校验的开关
xmlDoc.validateOnParse="true"
// 加载被约束的XML文件
xmlDoc.load("test.xml")
// 校验的结果
document.write("<br>Error Code: ")
// 输出校验的错误码
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
// 输出校验的错误原因
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
// 定位错误的行号
document.write(xmlDoc.parseError.line)
</script>
5. 运行浏览器打开校验的页面
如果现实如下说明校验成功
如果现实如下的信息说明不满足规则
J多学一招: 查看专业的软件开发中配置文件?
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd à 引入约束文件
version="2.5">
DTD语法
u 引入约束文件
u DTD基本语法
Schema约束
Schema语法
u 引入约束文件
u DTD基本语法
总结
熟练掌握XML的基本语法结构即可。
了解DTD和Schema的语法规则
掌握约束文件的引入方法(Spring框架)