XML
XML(ExtensibleMarkupLanguage),翻译过来就是可扩展标记语言
XML是W3C组织发布的,目前遵循的是W3C发布的XML1.0
2.用于保存有关的数据
在一个软件系统中,系统启动的模块,可以通过XML文件来实现
XML语言出现的根本的目标在于描述途中有关系的数据
其中XML开始出现的原因主要是为了取代HTML这们语言,
其中HTML文件主要是主要的特点是:
1.严谨性差
2.编码的时候不严谨
一个XML文件分为一下几个部分
1.文档的声明
2.元素
3.属性
4.注释
5.CDATA区,特殊字符
6.处理指令(progressinstruction)
文档的声明
最简单的文档声明
<?xmlversion=”1.0”?>
其中注意格式,其中问号前面还有一个空格
用encoding来确定编码
<?xmlversion=”1.0”encoding=”gb2312”>
其中一定要注意到乱码的问题
例如:
当文件数据的编码是
<?xmlversion-=”1.0”encoding=”UTF-8”?>
数据的编码是UTF-8但是数据的保存是按照gb2312,这样在硬盘上存储的数据是并不是按照UTF-8而是按照gb2312,这样保存的数据并不是,我们想要的数据了
在通过浏览器,解码的时候是按照XML文旦中的encoding编码所以会变成乱码
其中我们在变成的时候一般用的是
<?xmlversion=”1.0”encoding=”gb2312”?>
1.保存的时候,是按照UTF-8
2.将encoding方法改成gb2312
我们一般使用的Eclipse进行开发,通过这个工具类开发,帮我们隐藏了许多的问题
使用standalone属性说明数据的文档是独立的
<?xmlversion=”1.0”encoding=”gb2312”standalone=”yes”?>
但是这个一般是没有用的
<?xmlversion=”1.0”encoding=”gb2312”standalone=”no”?>
在IE中任然是可以打开的。
如果没有文档声明,那么这种XML文档称为格式不良好的文档声明
元素
XML文档中的元素就是标签
例如
包含了标签体
<yellowcong>我是黑马</yellowcong>
不包含标签体
<yellowcong/>
格式良好的标签必须有一个根标签,其他的标签都是子标签和根标签
对于XML标签中出现的所有的空格和换行都会当做标签的类容进行处理的
下面的标签的类容是不一样的
<yellow>我是神</yellow>
<yellow>
我是神
</yellow>
由于在XML文件中换行和空格的良好的习惯就需要改变了。
这个对于XML中是很重的,如果你们掌握的不好,就可能出现问题
命名规范
1.区分大小写
2.不能以数字和“_”下划线开头
3.不能以XML开头
4.不能包含空额
5.文件中不能有冒号
XML的属性
<yellowcongname=”heima”></yellowcong>
<yellowcong>
<name>heima</name>
</yellowcong>
注释
其中XML的注释和HTML的注释是类似的
<!--注释的类容-->
重点
1.XML的注释不可以将注释写在声明的前面
2.XML中的注释不可以嵌套
CDATA
在编译XML文件中,如果有些类容,不想XML系统解析,而是当成原始类容来处理
这时我们可以使用CDATA来处理
语法:
<![CDATA[
<!--不处理的类容-->
]]>
转义字符
&&
><
<>
“(双引号)"
‘(单引号)'
其中注意的是数据其中后面的“;”是一定要写的,对于这个对于人,来说区别不大,但是对于计算机来说,区别是很大的,应为电脑没有处理数据
对于数据,如果给人看,那么,就是用转义字符,如果给程序看,就不使用转义字符
处理指令(processinginstrustion简称PI)
例如在XML文档中使用xml-stylesheet指令,通过xml解析,会调用css文件,来显示数据
<?xml-stylesheettyple=”text/css”href=”1.css”?>
其中指令以<?开头,并以?>是常见的指令的一种处理,其中开头的声明,就是一句指令
例子:
建立一个xml文件
<?xmlversion="1.0"encoding="gb2312"?>
<?xml-stylesheettype="text/css"href="day05.css"?>
<xml-body>
<!--其中有些要点,请大家注意一下,对于一些编程的词,一定不要写错了,刚刚我就把hret给写错了,搞了半天-->
<yellowcongid="a1">我是黑马程序员</yellowcong>
</xml-body>
然后建立css文件
#a1{
font-size:150px;
color:red;
}
DTD:
对XML进行约束的
一:元素的声明:
在DTD中,XML元素通过元素声明来进行声明。元素声明使用下面的语法:
<!ELEMENT元素名称类别>
1任意类型的元素
带有任何内容(字符串、子元素、空元素)的元素,通过类别关键词ANY声明的元素,可包含任何可解析数据的组合:
<!ELEMENT元素名称ANY>
如:<!ELEMENT书籍列表ANY>
注意:应尽量避免使用ANY定义。
2空元素
空元素通过类别关键词EMPTY进行声明:
<!ELEMENT元素名称EMPTY>
如:<!ELEMENT书籍列表EMPTY>
3字符串值的元素
通过圆括号中的#PCDATA进行声明:
<!ELEMENT元素名称(#PCDATA)>
如:
<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>
<!DOCTYPE书籍列表[
<!ELEMENT书籍列表(#PCDATA)>
]>
<书籍列表>描述</书籍列表>
4包含子元素
带有一个或多个子元素通过圆括号中的子元素名进行声明:
定义要求顺序的子元素:
<!ELEMENT元素名称(子元素名称1,子元素名称2,……)>
例如:
<!ELEMENT计算机书籍(书名,作者,价格,简介)>
定义互斥的子元素:
<!ELEMENT元素名称(子元素名称1|子元素名称2|……)>
例如:
<!ELEMENT计算机书籍(书名|作者|价格|简介)>
5混合元素
混合元素的语法格式如下:
<!ELEMENT父元素名称(#PCDATA|子元素名)*>
如:
<!ELEMENT计算机书籍(#PCDATA|书名|作者|价格|简介)*>
二:属性
在DTD中,属性通过ATTLIST声明来进行声明。
属性声明使用下列语法:
<!ATTLIST元素名属性名属性类型元素对属性的要求默认值)>
其中,默认值可有可无,要求可有可无
如:
DTD实例:
<!ATTLIST作者地址CDATA#required)>
或
<!ATTLIST作者地址CDATA#FIXED"广州")>
XML实例:
<作者地址="广州">李刚</作者>
以下是属性类型的选项:
类型属性值描述
CDATA值为字符数据(characterdata)
如:<!ATTLIST作者地址CDATA#required)>
(en1|en2|..)Enumerated:此值是枚举列表中的一个值
如:<!ATTLIST肉类型(鸡肉|牛肉|猪肉|鱼肉)"猪肉")>
ID值为唯一的id
如:<!ATTLIST计算机书籍ISBNID#required)>
IDREF值为另外一个元素的id
如:<!ATTLIST计算机书籍ISBNIDREF#required)>
IDREFS值为其他id的列表,多个引用之间以空格隔开
ENTITY值是一个实体
ENTITYS值是一个实体列表,多个实体之间以空格隔开
NMTOKEN值为合法的XML名称,表示属性值只能有字母、数字、下划线、英文点(.)、英文冒号(:)、英文中划线(-)等符号组成
NMTOKENS值为合法的XML名称的列表,表示属性值由多个NMTOKEN组成,多个NMTOKEN之间以空格隔开
NOTATION此值是符号的名称(过期了,尽量避免使用)
默认值参数可使用下列值:
值解释
#IMPLIED属性值可有可无
#FIXEDvalue属性值是固定的
三:实体
实体引用就是用一个字符串代替另一个字符串。
实体可在内部或外部进行声明。
实体声明
语法:
<!ENTITY实体名"实体值">
在XML文档中使用实体引用的语法:
&实体名;
注意:在内部DTD和外部DTD都可以如此定义,但都是应用在XML文档中。
例子:
DTD例子:
<!ENTITYspring"Spring2.0宝典">
XML例子:
<书名>&spring;</书名>
应用在外部DTD中的实体声明
语法:
<!ENTITY%实体名"实体值">
在DTD中使用实体引用的语法:
%实体名;
例子: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- 内部DTD,指定了文档根元素:书籍列表 --> <!DOCTYPE 书籍列表[ <!ELEMENT 书籍列表 (计算机书籍)*> <!ELEMENT 计算机书籍 (书名,作者,价格,简介)> <!ELEMENT 书名 (#PCDATA)> <!ELEMENT 作者 (#PCDATA)> <!ELEMENT 价格 (#PCDATA)> <!ELEMENT 简介 (#PCDATA)> ]> <!-- XML文档部分 --> <书籍列表> <计算机书籍> <书名>XML宝典</书名> <作者>刘洪</作者> <价格>79.00</价格> <简介>该书详细介绍了XML的基础知识</简介> </计算机书籍> </书籍列表>
总结:定义的有三种:
ELEMENT::标签
ATTLIST:属性
ENTITY:实例