网上对xml的用途争议颇大。xml不能代替html,他的诞生也不是为了替代html ,(这本身就是个争议了,有专家提出了一大堆理论,也有牛人发表了使用心得,请参考xml给我们带来了什么?)
1、初步认识xml
xml和html的对比
(1)使用有意义的标记
html只是进行了数据格式化,,以便提供给浏览器读取,但不能传达数据的语义。而xml标记却能提供语义理解功能
(2)数据的语义与显示方式分开
html定义了数据如何显示,但没有定义每个元素表示什么内容。因此如果获取了html格式的数据,可以立即显示它,但要对数据进行整理和其他操作就非常困难。而xml描述数据内容的语言,本身不决定数据该如何显示,数据的显示由xsl决定.
(3)可自定义的标记
html标记各类有限不能随意添加,而xml 可由用户按需要添加。
(4)严格的语法控制
一直有人说html的语法规则比较多元化,比较松散,对网页编写者来说,比较方便,但对于机器来说,语言的
语法越松散,处理起来就越困难,对于传统的计算机来说,还有能力兼容松散语法,但对于许多其他设备,比如手机,难度就比较大。xml有严格的语法要求,文件格式相对紧凑,比较容易被程序处理
xml和xsl
有了xml和dtd的认识,我们就可以来做个简单的xml了
,
你看,如果不讨论xsl,xml就是一个存储复合数据的文件
xml
好吧,如果把xml和xsl分离了,那我就只能对xml定位为一个存储数据,交流数据的数据类型了。我们来看一个简单的xml的例子
<?xml version="1.0" ecoding="utf-8"?>//xml声名
<!DOCTYPE student SYSTEM "student.dtd">//文档规则说明
<!--student context-->
<student> //根元素,只能有一个
<name> //student的子元素,它里面可以嵌套其他元素
<first>e</first> //里面的“e”是个字符串,是first元素的值
<middle>q</middle>
<last>yun</last>
</name> //name元素的结束标志
<sex>boy</sex>
<age>22</age>
<address type="office"> //type是对address这个元素的属性声音
<street>earth</street>
<country>china</country>
</address>
</student>
这个xml就是把一个学生的名字:eqyun,性别:boy,住址:.. 存了起来。就是个复合数据类型嘛
如果你有留意到
<!DOCTYPE student SYSTEM "student.dtd">
中的"student.dtd",那我就感动了(这么认真看,抱一个~)
DTD
dtd是让xml文件能够成为数据交换标准的保证, 是对xml元素定义的方法,例如以上对student.xml的元素定义 student.dtd
<?xml version="1.0" encoding="utf-8"?>
<!ELEMENT student (name,sex,age,adderss)> //!ELEMENT 定义了一个元素student ,它里面包含其他元素
<!ELEMENT name (first, middle, last)>
<!ELEMENT first (#PCDATA)> //定义了first元素,他的数据类型是#PCDATA
<!ELEMENT middle(#PCDATA)>
<!ELEMENT last(#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT age(#PCDATA)>
<!ELEMENT address(street,ountry)>
<!ELEMENT address(#PCDATA)>
<!ELEMENT county(#PCDARA)>
dtd也可以在内部定义
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE 文档根元素 [
....内部dtd内容...
]>
<文档根元素>
.......
</文档根元素>
DTD的优点:
@使得xml文档保持一致
@DTD可以共享
@DTD提供了对xml语汇的形式化和完整的定义
@DTD可以共享
@DTD提供了对xml语汇的形式化和完整的定义
@每个XML文档都有单个DTD来限制
有了xml和dtd的认识,我们就可以来做个简单的xml了
,
你看,如果不讨论xsl,xml就是一个存储复合数据的文件