XML详解
一、xml产生的原因
- xml(可拓展的标记语言)是为了可以自定义HTML中的标记(标签),以及为了描述数据而产生的
二、xml的作用
- 1.数据传输格式的标准
- 2.用作配置文件
- 3.充当小型数据库
三、xml文件的构成
1、文档声明
<?xml version="1.0" encoding="UTF-8"?>
- xml文件需要在一开始解析器一些信息
- ?xml代表本文件是xml文件
- version后面是xml版本号
- encoding后面是这个文件的字符编码
- 处理指令
- 在文档声明的后面可以加上文件处理指令
xml-stylesheet指令:链接CSS样式表
<?xml-stylesheet href="class.css" type="text/css"?>
2、文档体
- 文档体由元素和注释组成:
- 元素(标签,标记):
- xml文件只有一个根元素,要将其他所有元素包括起来
- xml标签格式由一对尖括号组成:’<></>’,’<>‘代表标签的开始,’</>'代表标签的结束
- xml标签中可以填写数据和文本
- xml标签可以嵌套,单不允许交叉嵌套,例如:
<a>hello<b>world</b></a> //嵌套
<a>hello<b>world</a></b> //交叉嵌套
- xml标签的开始标签中可以添加属性,属性值由双引号(")或单引号(’)分隔
<a name="study"></a>
- 在xml文件中有一些特殊字符是显示不出来的,要使用一些特殊符号代替,这种规定好的特殊字符被称为实体
- 预定义字符实体(’;'不能省略)
< <
> >
" "
' '
& &
+ 自定义实体
<!--定义实体在文档声明的后面-->
<!DOCTYPE 根元素[
<!--<!ENTITY 实体名 "实体值">-->
<!ENTITY home "China">
]>
<!--实体的使用-->
&home;
+ CDATA,字符原样输出,不会被实体内容替代,原样解析(xml默认是PCDATA,是会被解析)
CDATA的使用
<![CDATA['内容']]>
- 注释:
- 注释的格式:
<!--注释内容-->
- 注释不能嵌套
###xml的命名空间
- 当两个文档有相同的元素名且含义不同,在一起使用时。就会发生命名冲突,解析器无法对这两个元素进行区分,这个时候就要使用命名空间
- 第一种解决方法:在元素上声明命名空间
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
另一个xml文档
<f:table>
<f:name>茶几</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
- 第二种解决方法:使用默认命名空间(xmlns=“namespaceURI”)
<table xmlns="http://www.koutian.com">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
另一个xml文档
<table xmlns="http://www.baidu.com">
<name>茶几</name>
<width>80</width>
<length>120</length>
</table>
四、xml约束
- xml约束是用来约束一个xml文档的书写规范
- 内部DTD约束(这里只介绍相关用法)
<?xml version="1.0" encoding="UTF-8"?>
DTD约束声明
<!DOCTYPE students[
<!ELEMENT students (stu+)>
<!ELEMENT stu (id,name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
<students>
<stu>
<id>1</id>
<name>tom</name>
<age>20</age>
</stu>
</students>
- 外部DTD约束
<?xml version="1.0" encoding="UTF-8"?>
引用外部的dtd约束(SYSTEM表示引用的dtd文件在本地)
<!DOCTYPE students SYSTEM "student.dtd">
<students>
<stu>
<id>1</id>
<name>tom</name>
<age>20</age>
</stu>
</students>
PUBLIC表示引用一个公共的DTD文件
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
注:约束文件除了dtd以外,还有种格式叫.xsd,两种文件都是对xml文件进行约束,但是语法不同