简介 | 属性 | 主要应用 |
Cpoyright
|
|
实例 | 元素 | 实体引用 | 我的博客 | |
声明 | 根元素 | 格式良好 | v512工作室 | |
标签 | 处理指示 | CDATA与注释 | 中科院新科海学校 |
XML与HTML的异同
HTML是互联网应用的最基础技术,它关注的是数据的显示,它的核心作用是信息的布局和显示
HTML中所有标记都是固定好了的。若再增加新的标记,必须要重新制定新的标准才可以并且要让浏览器识别
GML和SGML都是HTML和XML的祖先,XML跟HTML有很大的不同,二者属于表亲的关系,就相当于HTML是XML的表哥
XML(eXtensible Markup Language)是一种类似于HTML的可扩展标记语言。它可以直接在IE等浏览器中显示
XML文件构成。所有的XML文件均由以下模块构成:元素、属性、实体、PCDATA(文本内容)、CDATA
XML所有标记都是自定义的,也可以定制中文标记。它的设计宗旨是包含和传输数据,即携带数据。它的典型扩展名即*.xml
XML不是用来替换HTML的技术,二者是为不同的目的而设计。XML设计的核心是包含和传输数据,HTML设计的核心是显示数据
XML的W3C的推荐标准,W3C是互联网管理的一个机构。XML的最新版本1.0,XML标准的网址:http://www.w3.org/TR/REC-xml/
XML是很大的一个技术体系,它有很多的内容。比如SVG、SMIL、HDML、OEB等,包括跟HTML的一个结合点XHTML
XML作为很大的一个技术框架,应用的领域很多,如电子商务、生物技术、化学、数学等等。因为它涉及到的是携带数据,很多行业都可以用XML表示一些数据
GML(1969) | 通用标记语言 |
SGML(1985) | 标准通用标记语言 |
HTML(1993) | 超文本标记语言 |
XML(1998) | 可扩展标记语言 |
XHTML | 可扩展超文本标记语言 |
SVG | 可缩放矢量图形语言 |
SMIL | 同步多媒体综合语言 |
HDML | 手持设备标记语言 |
... ... | ... ... |
OEB | 开放电子结构规范 |
XML的主要应用
做为系统的配置文件
Spring中的applicationContext.xml
Hibernate中的hibernate.cfg.xml
Struts2中的struts.xml
log4j中的log4j.xml
Web应用中的web.xml
Tomcat中的server.xml
Ajax中传输数据:它涉及到服务器要往浏览器传数据,传的数据就是以XML格式进行传输的
Web Services中传输数据:它的数据也是以XML格式传输的,包括它所涉及到的一些协议,协议也是用XML制定的
异构平台的数据交换与整合:比如开发一个大型的银行支票交换系统。把各个银行的支票信息汇总在一起然后完成电子汇兑
而涉及到的每个银行的系统都是不一样的,那么如何完成支票的兑付呢?
实际上就可以让它们把支票信息以XML形式汇集到一起,然后对它们进行加工、交换、整合然后进行处理
因为XML是跨平台的,不同的平台都可以用XML携带数据
选择XML做为配置文件的原因:在很多的开发框架中,XML是用来做配置文件的,因为它携带数据以及后期处理都是很方便的
由于XML可以非常方便的通过Java的API读取它的配置内容,而使用其他的则不是很方便
所以现在我们应用的框架或者说一些类库,如果有配置文件,80-90%都是XML文件
XML实例
<?xml version="1.0" encoding="utf-8"?>
<书籍列表>
<计算机书籍>
<书名>XML的今生今世</书名>
<价格>66.66</价格>
</计算机书籍>
</书籍列表>
说明①:文本编辑器保存XML文件时,保存类型和编码都应该保存为声明中的值的类型,否则浏览器会报错
说明②:一个XML文件只能有一个根元素,这里是<书籍列表>。但子元素个数不限,这里可以有多个<计算机书籍>
XML声明(<?xml version="1.0" encoding="utf-8"?>)
大多数XML文件以XML声明作为开始,它提供了关于文档的基本信息
若XML文件没有以XML声明作为开始,那么可以说也......是可以的
version表示XML的版本。Encoding表示XML文件使用的字符编码方法
标签(左尖括号(<)和右尖括号(>)之间的文本)
开始标签。例如:<name>
结束标签。例如:</name>
根元素
XML文件必须有且只能有一个根元素
XML文件的结构上是一种树状结构,它从"根部"开始,然后扩展到"枝叶"
XML的内容必须包含在一个单一元素中。这个单一元素称为根元素,它包含文档中所有文本和所有其它元素
元素(开始标签、结束标签以及位于二者之间的所有内容)
元素区分大小写,如<bookname>XML的今生今世</BookName>就会报错
元素要正确嵌套,如<bookname>XML的今生今世<price></bookname>39.00</price>就会报错
元素需正确关闭,如<bookname>XML的今生今世就会报错
空元素正常输出,如<bookname/>或<bookname></bookname>等均会正常输出<bookname />
父元素与子元素,例子:
<book>
<author>
<name>刘伟</name>
<email>[email protected]</email>
</author>
<isbn>12345</isbn>
</book><!--这里若写成</Book>则会报错,因为<book>找不到它的结束标签</book>-->
实体引用(为了避免把字符数据和标签中需要用到的一些特殊符号相混淆,XML提供了实体引用)
字符
|
实体引用 |
&
|
& |
>
|
> |
<
|
< |
“
|
" |
’
|
' |
属性(必须有值,值必须用引号括起)
可以使用单引号,也可以使用双引号,但要始终保持一致
一个XML文件有很多属性,要么都用单引号要么都用双引号(个人推荐用双引号)
<bookname isbn="xxx123">XML应用大全</bookname>是正确的
<bookname isbn='xxx123'>XML应用大全</bookname>是正确的,但IE输出时均以双引号形式输出
<bookname isbn='xxx123">XML应用大全</bookname>是错误的,因为单引号和双引号不能混合使用
CDATA与注释
在特殊的标签CDATA下,所有的标签、实体引用都被忽略,而被XML处理程序一视同仁地当作字符数据看待
CDATA形式:<![CDATA[文本内容]]>
注释:<!--和-->引起来的(有时若想让某些XML内容不生效,就可以放在注释中)
示例:<name><<''“XML应用大全”''>></name>运行时会出错
<name><![CDATA[<<''“XML应用大全”''>>]]></name>运行时正常输出<<''“XML应用大全”''>>
<!--这是我加上的注释-->
处理指示PI(Processing instructions,指示当前的XML文件的内容如何被显示或处理)
语法:<?target arg*?>
例子:使用XSLT处理当前的XML文件:<?xml-stylesheet type="text/xsl" href="book.xsl"?>
格式良好的XML(拥有正确语法的XML)
通过DTD验证的XML是"合法"的XML
格式良好(Well-formed)的XML会遵守以下XML语法规则:
XML文件必须有根元素
XML文件必须有关闭标签
XML标记对大小写敏感
XML元素必须被正确的嵌套
XML属性必须加引号