传智播客XMl比较四部曲--(一)个人总结

来源:互联网 发布:js获取日期毫秒数 编辑:程序博客网 时间:2024/04/29 19:01

 1. XML的起源 /  XML与HTML的关系

XML - eXtensible Markup Language(可扩展的标记语言)

SGML  (Standard General Markup Language)
通用标记语言
美国法律
英国        判例法    计算机化的表示法- 关系数据库
发明一种标记语言 --- 元语言
特点:能描述别的语言                       

SGML1.0    --- W3C (国际标准化组织)                          互联网 怎么用这个标记语言??
简化:
<1> HTML (超文本的标记语言) HyperText Markup Language 
特点:
a)表现格式
<h1>文字</h1>
b)标记是固定的
<h10></h10> 标记没有
c)弱点: html标记不具有扩展性
不支持自定义的标记
标记只代表格式 不能表示内容

能否有一个新的标记语言?
具有扩展性:标记可以自定义
标记能反映内容 但不表示格式   
<2> XML (可扩展的标记语言)
具有扩展性:标记可以自定义
<姓名></姓名>


标记能反映内容 但不表示格式
<姓名>张三</姓名>

仍然用html来显示内容的样式

XML + Html新的标记语言的集合 -- 互相补充的


2.XMl的用途

XML特点:表示内容的一种标记语言

a)配置文件:
web.xml --- web应用
struts_config.xml ---- 配置struts应用
ejb-jar.xml --- 配置ejb的
Hibernate
hibernate.cfg.xml --- 配置Hibernate
user.hbm.xml  --- 配置类user
b) 动态网站
jsp + 数据库
asp + 数据库
xml + 数据库 + XSL(xml 样式语言-描述格式)
cocoon 开源项目 --xml的动态网站
JBuilder中内置
c)ADO.net
离线数据存储 -- 数据缓存在客户端采用xml格式

d) 自定义标签
<jsp:useBean id="" class=""/>
产生新的语言的标记
<bean:write key=""/>

e) 数据交换的平台

Oracle数据库            Db2数据库
客户表                 客户表

整合这2张表中的数据  放到sqlserver中

制定客户数据的格式--- XML格式
<客户姓名></客户姓名>
<客户地址></客户地址>
<客户的资金></客户的资金>  
程序 能够读取和写这个XML文件

f) 可以自己设计它的用途

3. xml文件的构成????

a) xml文件是一个 简单的文本文件
.xml的后缀名结尾

b) xml的格式规范 --- xml是格式良好的XML文件
一定要保证格式良好

1) 声明语句 必须是第一句
<?xml version="1.0" encoding="UTF-8"?>
version 版本 1.0
encoding 编码格式 UTF-8(unicode编码 支持多国文字)
gb2312 中文编码

2) 由若干自定义的标记构成文件的主体
自定义标记的要求:
*标记成对出现 <通讯录></通讯录>

开始标记 <通讯录>
结束标记 </通讯录>
<通讯录/>
html
*标记可以嵌套 但是层次要正确
<员工>  
<地址>  
</员工>
</地址>    不正确的 嵌套不正确

*标记区分大小写
<email></email>
<Email></Email> 是2个不同的标记

* 整个XML文件要有一个根标记(元素)(有且仅有一个)

3) XML的标记可以带有属性
属性写在开始标记中
可以有多个属性 之间用空格分开
属性的值一定要带双引号或单引号

4) 空标记
<工资/> 自己把自己给关闭了
内容是没有
但是属性是可以有的

5) 标记取名字的时候
不要使用XML/xml/Xml字样的名字 
名字中不要使用: --- 有特殊的用途
名字不能含有空格 (标记名字和属性名字)
其他的没有限制 自定义

XML是简单的文件 要求很少

IE浏览器来查看xml文件 ????

xml是不带有格式  在IE中就显示出一个层次关系

XML文件其他的元素标记???
1) 注释
html风格的注释
2) 实体
html中的 空格    所对应的实体     &nbsp;

xml中的实体就5个分别是
&            &amp;
>            &gt;
<            &lt;
"            &quot; 
'            &apos;
3) CDATA节
<![CDATA[
公司涨工资 >20%
]]>
在CDATA节中的内容 不是XML的一部份
文字原样显示 不被XMl所解析


dept表   -> XML文件(主键写成属性) -> 数据库表的数据


对XML文件进行有效性验证 -> 限制XML文件的书写格式的
DTD
Schema      ->  表结构

最先出现DTD  (Document Type Define)文档类型定义

如何写一个DTD文件???
.dtd 后缀

xml的标记 又称为元素

<!ELEMENT ...>       定义xml文件中的元素
+   元素出现的次数>=1
?   元素出现的次数<=1
*   元素出现的次数>=0
不写 元素出现的次数=1

<!ELEMENT 部门表 (部门+)>  部门表元素至少由一个部门元素组成

,      分隔符,元素出现的顺序

<!ELEMENT 部门 (名称,地址)>  部门元素由1个名称和1个地址元素组成
并且名称在地址元素之前出现


<!ELEMENT 名称 (#PCDATA)>  名称元素是由文本组成的,不含有子元素

<!ATTLIST 部门 编号 CDATA  #REQUIRED>
部门元素有属性编号 编号的数据类型是字符类型 (CDATA)
编号属性是必须的 (#REQUIRED)

工具XMLSPY 
根据XML产生DTD
根据DTD产生XML的框架
为XML文件指定DTD

a) 自己根据XML文件 写出 DTD
b) 根据DTD 能写出XML文件


<!ElEMENT> 元素   
定义元素的组成
<!ELEMENT 部门表 (部门+)>
<!ELEMENT 部门 (名称,地址)>

定义元素的数据类型,数据类型不多(不足)
<!ELEMENT 名称 (#PCDATA)>       

定义元素是空元素(EMPTY)
<!ELEMENT 工资 EMPTY>

定义元素是空元素或由子元素组成(ANY)
<!ELEMENT 工资 ANY>

定义元素是文本和子元素的混合

<!ELEMENT 部门 (#PCDATA | 员工)*>
<!ELEMENT 员工 EMPTY>


<!ATTLIST> 属性  - 依赖于元素
定义某个属性的数据类型
<!ATTLIST 部门 编号 CDATA #REQUIRED>

属性的数据类型
CDATA       字符型
<!ATTLIST 部门 编号 CDATA #REQUIRED>
ID          唯一的字符值,值的内容的第一个字符必须是字母
<!ATTLIST 部门 编号 ID #REQUIRED>
NMTOKEN     字符,只能是英文字母或数字(不太严格)
<!ATTLIST 部门 编号 NMTOKEN #REQUIRED>
NMTOKERNS
<!ATTLIST 部门 编号 NMTOKENS #REQUIRED>
IDREF       ID的引用(类似于外键)
<!ATTLIST 员工
编号 ID #REQUIRED
经理 IDREF #IMPLIED
>
IDREFS      引用多个ID值
<!ATTLIST 员工
编号 ID #REQUIRED
经理 IDREFS #IMPLIED
>
选择
<!ATTLIST 员工 性别 (男|女) #REQUIRED>




属性的约束
#REQUIRED     属性必须出现
#IMPLIED      属性是可有可无的
#FIXED "A7903"  固定值
<!ATTLIST 员工 经理 IDREF #FIXED "A7903">
default     缺省值
不写这个属性的时候的默认值  
<!ATTLIST 员工 经理 IDREF "A7903">

<!ENTITY> 自定义实体 (在DTD中定义 在XML中使用)
<!ENTITY dev "开发部">
<!ENTITY sale "销售部">
在XML中 &dev; 
&sale;


DTD  a)
不是XML文件  是一个特有的格式 (是从SGML中带来的)
DTD逐渐会被SCHEMA技术取代


b) 支持的数据类型太少
schema支持的数据类型和sqlserver的数据类型是一样

<!NOTATION> 注解 需要使用外部软件的程序

<!NOTATION gif  SYSTEM  "C:/Program Files/ACD                               Systems/ACDSee/6.0/acdsee.exe">
gif 代表一个外部的程序  acdsee.exe

<!ATTLIST photo 看图软件 NOTATION (gif)  #IMPLIED>
属性的值按照NOTATION的定义来解析的

<!ATTLIST photo 图片 ENTITY #IMPLIED>
属性是个实体的类型

<!ENTITY pic SYSTEM "zhangyin.gif" NDATA gif>
实体pic的含义 就是图片zhangyin.gif
使用gif所代表的软件来查看




<!DOCTYPE 根元素 SYSTEM "F:/dept.dtd">
SYSTEM 外部的DTD (自己用的)
<!DOCTYPE 根元素 PUBLIC "url">
公用的外部的DTD 
<!DOCTYPE 根元素 [
]>
内部DTD  --- XML和DTD写在一个文件中