1、Xml(eXtensible Markup Language)是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具
XML是一种简单的数据存储语言
Xml:可扩展标记语言,是一种最本质的东西,比如说是橡皮泥
Dtd:是一种约束,他规定xml可以有什么,叫橡皮泥可以有什么,比如:你可以有颜色、产地等
Xsl:是一种形式,按第一种形式可以捏成狗,按第二种形式可以捏成猫
xml看似是文本,但他是有数据类型的
2、语法验证:通过ie等浏览器打开,能正常打开则无误
3、文档结构:通常从xml声明开始,通过xml元素来组织数据,为了是数据更加清晰并且具有自身的格式可以引入CDATA数据块,可以在文档中加入注释,如果需要给xml处理程序提供一些信息,可以包含处理指示
4、xsl:负责显示
5、DTD是一套关于标记符的语法规则,规定了xml语言的语法和词汇表,也就是说定义了文件的整体结构和语法,通过dtd,可以对xml文件的合法性进行描述及检验。
DTD具体作用:
* 告诉语法分析器它所关联的XML文档的根元素、内容及结构
* 元素说明部分,使用元素类型声明ETD声明所有有效的文档元素
* XML元素可以为空,也可以是纯文本或若干个子元素,子元素同时可以有各自的子元素。DTD通过元素之间父子关系描述整个文档的结构关系
6、引入dtd的方式:
* 直接在xml文件中写入(内部dtd)用的非常少 如:
<? Xml version = “1.0” standalone = “yes”?>
<!DOCTYPE 根元素名[
元素描述
]
ENTITY定义
文件体
* 分别在不同的文件中(外部dtd)比较常见 如:
<? Xml version = “1.0” standalone = “yes”?>
<!DOCTYPE 根元素名 SYSTEM “dtd文件名”>
<!DOCTYPE 根元素名 PUBLIC “dtd标识名” “http://www.w3.org/……dtd>
Dtd标识名:iso的以”iso”开头,被改进的非iso标准以”+”开头,未被改进的非iso标准的以”-“开头。如:
“-//dtd所有者名称//所描述的文件类型//语言种类”,对应下面的一串
在html中往往有这样一串东西:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
还有一串:<html xmlns="http://www.w3.org/1999/xhtml">这是xhtml,xhtml限制了标签,不能像以前的html一样,有些标签不写它也不报错,xhtml是xml和thml的结合体
7、dtd语法怪异,SGML的残留,没有数据类型,没有对dtd的编程接口,schema简单,本身就是xml,克服了以上的缺点
8、两种不同的xml分析模型:
* DOM----所以数据位于内存中,它是面向模型的。它是一次性把文件读到内存里,形成一棵dom树,以后就不读文件了,访问内存。优点:效率高;缺点:不能装载大型的文件
* SAX-----流程性分析,不必把所有数据Load到内存中,可以分析大型的xml文件常用于Server-side的xml—xhtml转换,它是面向事件的。缺点:不能对文档进行随机访问,只读,只遍历文档一次
9、XML文档的处理过程
* 解析器检查 XML 文档的有效性和格式规范
* 创建解析树并传递给呈现代理程序
* 呈现代理程序显示解析树
* 解析器创建一系列对象,显示与 XML 文档关联的样式表
10、示例:
[1]<?xml version=“1.0”encoding=”GB2312“standalone=”no“?>
[2]<?xml—stylesheet type=“text/xsl”href=”mystyle.xsl”?>
[3]<专有名词列表>
[41 <专有名词>
[5] <名词>XML</名词>
[6] <解释>XMI。是一种可扩展的元置标语言,它可用以规定新的置标规则,并根据
这个规则组织数据</解释>
[7] <示例>
[8] <!—一个XML的例子—>
[9] <![CDATA[
[10] <联系人>
[11] <姓名>张三</姓名>
[12] <EMAIL>zhang@aaa.com</EMAIL>
[13] </联系人>
t14] ]]>
[15] </示例>
[16] </专有名词>
[17]</专有名词列表>
11、一个xml文件的基本构成:
一个XMl文档最基本的构成是:
* XMl声明
* 处理指令(可选)
* XML元素
上例中出现的逻辑要素有:
[1]是XML声明
[2]是处理指令
[3]一[17]是文档中的各个元素
[8]是注释
[9]~[14]是CDATA节
在[5]行的“<名词>XML</名词>”中,“<名词>”“</名词>”是标记,“XML”
是字符数据。
12、XML整体逻辑结构总结
• XML文档通常以一个XML声明开始
• 通过XML元素来组织XML数据
• XML元素包括标记和字符数据
• 为组织数据更方便、清晰,在字符数据中引入CDATA数据块
• 在文档中引入注释
• 需要给XML处理程序提供一些指示信息,XML文档中可以包含处理指令
13、Schema 实际上也是XML的一种应用,就是将XML DTD重新按照XML语言规范来定义,这充分体现了 XML自描述性的特点。
14、Schema示例:
1.<?xml version=“1.0” encording=“GB2312”?>
2.<Schema xmlns=“urn:schemas-microsoft-com:xml-data” xmlns:dt=“urn:schemas-microsoft-com:datatypes”>
8、<ElementType name=“电话” dt:type=“fixed.14.4”/>
9. <ElementType name=“学生” content=“eltOnly”/>
10. <elementType name=“姓名”/>
11. <elementType name=“籍贯”/>
12. <elementType name=“年龄”/>
13. <elementType name=“电话”/>
14. <ElementType >
15. <ElementType name=“学生花名册” content=“eltOnly”/>
16. <elementType =“学生”/>
17. <attribute type=“年级”/>
18. <attribute type=“班级”/>
19. </Element Type>
20.</Schema>
分析:
第1行是XML类型声明语句,指明该文档是一个XML文档,并且符合版本1.0规范;该文档采用GB2312编码。
第2行是Schema声明语句,它包含了Schema命名空间的声明。本例中用到了两个命名空间:一个是xmlns=“urn:schemas- microsoft-com:xml-data” ,它指定本文档是一个XMLSchema文档;另一个是xmlns:dt=“urn:schemas-microsoft-com:datatypes”>,它定义了本文档中可以使用的数据类型。
第3、4行是属性定义语句, 它定义了两个属性:年级和班级。
第5~8行是元素定义语句,它定义了两个属性:年级和班级。
第9 ~14行定义了本XML Schema的二级元素:学生,指明该元素含有包含四个子元素:姓名、年龄、籍贯、电话。
第15~19行定义了本XML Schema的顶级元素:学生花名册,指明该元素包含一个子元素:学生,以及两个属性:年级、班级。
第20行是结束标记语句,它指明该XML Schema 的描述到此为止。
15、Schema优点:
一致性。读者不必为搞懂DTD而去重新学习,从而节省了时间。
扩展性。引入了数据类型、命名空间。
互换性。利用Schema,我们能够书写XML文档,验证文档的合法性。通过映射机制,还可以将不同的Schema进行转换,以实现更高层次得数据交换。
规范性。同DTD一样,Schena定义了XML文档的整体结构,如哪些元素可以出现在文档中,元素间的系是什么,每个元素又有哪些子元素、属性,以及元素出现的顺序和次数等等。
易用性。XML文档的结构已变成Schema——一种“格式良好”的XML文档,用DOM和SAX去访问当然不在话下。