JavaWeb01_理论
HTML:超文本标记语言
XML:可扩展的标记语言(Extended Markup Language)
xml的两个特点:① 跨平台;② 不同程序之间的数据交流
比方说:
JavaBean对象,通过xml,传递到C语言,C语言解析xml并获得该JavaBean对象
Json对象,通过xml,传递到JAVA,java解析该xml并获得该Json对象
(高级程序语言,基本上都能对xml进行解析)
xml是W3C的一个标准推荐
xml主要被设计用来储存数据和传输数据(而html主要用来显示和组织内容展示给用户)
xml文档的组成包括:
第一:xml声明。例如:
<?xml version="1.0" encoding="UTF-8"?> //version是版本,encoding是编码集
第二:文档类型定义(DTD):
1、DTD概述
DTD用来定义XML文档的结构,它包含一系列规则说明,以确保XML文档的一致性和有效性
DTD定义了XML文档可用的词汇(元素和属性的名称)和结构
元素名称,包括根元素
元素的属性及属性的数据类型和取值方式
子元素的名称、顺序、出现次数
元素是否拥有子元素,是否能拥有文本内容,等等
可以用DTD验证XML文档
发现书写错误(命名错误)
检查结构和顺序
检查是否使用了规定的规范文档
2、DTD引用
DTD可以是被XML引用的独立的外部文档,也可以嵌入到XML文档中
DTD文档是特殊格式的XML文档
例如:外部文档:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 班级 (学生+)>
<!ELEMENT 学生 (ID, 姓名, 年龄?, 住址?, 电话*)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 住址 (#PCDATA)>
<!ELEMENT 电话 (座机*, 手机?)>
<!ELEMENT 座机 (#PCDATA)>
<!ELEMENT 手机 (#PCDATA)>
嵌入xml文档中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 班级 [
<!ELEMENT 班级 (学生+)>
<!ELEMENT 学生 (ID, 姓名, 年龄?, 住址?, 电话*)>
<!ELEMENT ID (#PCDATA)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 住址 (#PCDATA)>
<!ELEMENT 电话 (座机*, 手机?)>
<!ELEMENT 座机 (#PCDATA)>
<!ELEMENT 手机 (#PCDATA)>
]>
<班级>
<学生>
<ID>001</ID>
<姓名>王刚</姓名>
<年龄>2</年龄>
<电话>
<手机>234345456</手机>
</电话>
</学生>
</班级>
在XML文档中声明使用外部DTD文档 <!DOCTYPE 根元素名称 SYSTEM “DTD文档URL”> 例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 班级 SYSTEM “student.dtd”>
在XML文档中声明使用公共DTD文档 <!DOCTYPE 根元素名称 PUBLIC “公共标识符” “URI” > 公共标识符的格式为:标准//作者//类型和版本//语言 例如:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 班级 PUBLIC “-//WeiDP//Example 1.0//ZH-CN” “student.dtd”>
3、元素Element
ANY:内容中可包含子元素
格式:<!ELEMENT 元素名称 ANY>
EMPTY:不能包含任何内容
格式:<!ELEMENT 元素名称 EMPTY>
#PCDATA:不能包含子元素
格式:<!ELEMENT 元素名称 (#PCDATA)>
4、子元素的顺序和出现频率
<!ELEMENT 元素名称 (子元素名称[修饰符][,…])>
其中,修饰符为:
省略:必须出现,且只能出现1次
+:至少出现1次
?:最多出现1次
*:可以不出现,也可以出现多次
第三:处理指令:处理指令(PIs)允许文档包含用于应用程序的指令。指令并不是文档字符数据的一部分,但是必须通过应用程序传递。例如:
<?xml-styesheet herf=”hello.css” type=”text/css”?> //不常用
第四:注释
第五:根标签(根元素):有且仅有一个
第六:元素
第七:属性
第八:文本
使用
<![CDATA[×××]]>标签
这里的×××内容不会被xml解析,相当于CSS中的pre标签
xml中标记的使用要求:
标记大小写敏感
属性值用引号
标记成对出现
空标记关闭
元素正确嵌套
必须有声明
必须有且仅有一个根元素
xml元素语法:
名称不能以数字、下划线开头
不能以xml等关键字开头
不能有空格,不能有冒号
可以包含字母、数字和其他字符
DTD:
用于定义xml的结构,并校验我们书写的xml文档是否符合要求
有了DTD文档,每个xml文件都可以携带一个自身描述的文件,不同使用文档的人可以通过通用的DTD来交换数据
Schema文档也有类似的功能
XSL/XSLT :文档转换
XSL语言的全称是EXtensible Stylesheet Language,中文是指扩展样式表语言。
它是为了XML语言而存在的。
如果说CSS是Html语言的样式表,用来定义Html,控制Html显示。
那么XSL就是为了描述XML文档而存在的,是XML语言的样式表,它的功能相似于CSS对于Html的作用。
XSLT语言指 XSL 转换(XSL Transformations)。
上面说到XSL语言是为了XML存在的,但XSL不仅仅是样式表。
它包括三部分:XSLT、XPath、XSL-FO。
XSLT:一种用于转换 XML 文档的语言。
XPath:一种用于在 XML 文档中导航的语言。
XSL-FO一种用于格式化 XML 文档的语言。
Xpath/XQuery:文档查询
//:查找元素
@:获取属性
xml DOM/SAX:文档解析
DOM:
文档对象模型
提供了一系列的接口用于操作xml文档(创建、修改)
基于对象
和平台、语言等无关
缺点:整个文档必须在内存中解析和储存(整个文档全部加载到内存中,大型文档造成内存紧张)
优点:随机访问程序,DOM效率较高(内存操作)
SAX:
xml简单应用程序的接口
sax提供了用于解析xml文档的事件驱动模型
sax解析器使用回调机制来通知客户端应用程序
只读
不能对文档进行随机访问
只能遍历一次
基于事件驱动
占用内存少
Link/XPointer:文档链接和定位
提供很多强大的链接方法,可以建立单项或者复杂的链接方式
可以定位到节点或者节点集(文档定位技术)