oracle笔记 9
XML是什么?? XML和HTML的关系??? *****************
XML (eXtensive Markup Language) 可扩展的标记语言
标记语言 --- HTML (HyperText Markup Language)超文本的标记语言
SGML (W3C标准化组织) 通用标记语言 太复杂
首先实现一部分 : HTML
HTML普及 发展
HTML语言的特点:
<1>有一套固定的标记
<table>
<tr><th></th></tr>
<tr><td></td></tr>
</table>
<2>浏览器查看有统一和漂亮的页面
<H1>HELLO WORLD</H1> 美化
<3>不足之处:HTML4.0
a)标记不表示所写的文字的内容
只代表了一种显示的格式
b)标记是固定的,不能自己扩展
XML 特点
〈1〉标记代表内容
〈2〉 标记是可以扩展的,支持自己定义标记
<3> 不能表示在网页上所看到的格式(HTML长处)
互相支持的关系...不是要取代HTML的
XML的文件的格式是什么样的? ***************************************
格式的要求
<1>xml文件是个文本文件
<2>以.xml结尾来命名文件名
区分大小写的
<3>XML文件的第一行必须是
<?xml version="1.0" encoding="UTF-8"?>
XML的声明 version 版本1.0
encoding 编码格式UTF-8 (UNICODE编码) 中文可以使用GB2312
<?xml 。。 ?> 处理指令(XML声明的处理指令)
<4>自己定义标记(元素)
a)标记的名字不能含有: , 也不能带有XML这样的单词
b)必须成对出现
<公司> 开始标记
</公司> 结束标记
<Company> 开始标记
</Company> 结束标记 </company>不是结束标记,区分大小写
c)标记可以嵌套
正确嵌套
d)标记---元素
整个XML文件 一定要有且仅有一个根元素。
<集团></集团>标记对包含了所有的标记
e)元素中可以包含文本元素,也可以包含子元素
f)元素也可以不包含任何对象,称为空元素
<员工></员工> 或 <员工/>
g)元素可以定义属性(N个),属性的名字自己取,要求属性的值用""或
''给引起来
满足这些要求的XML文件: *******************************************
<1> XML文件的第一行必须是声明
<2> 整个XML文件 一定要有且仅有一个根元素。
<3> 标记必须成对出现正确嵌套
<4> 元素和属性的名字符合要求(不含有:或者XML/属性值有""或'')
称为格式正规的XML文件
上述基本的内容外 还有扩展的内容没有????
注释 <!-- 这是注释 -->
CDATA节
被这个标记所包含的内容不被IE所解析
最大的用处就是写JavaScript
实体
内部定义了5个实体
> > 和标记的<>区别
< <
还可以自己定义实体 ?????
<例子> 写一个XML文件
XML的用途
<1>作为软件的配置文件
<2>作为数据交换的格式
A公司
B公司 要相互传送定单
A和B必须确定定单的格式 一般用XML来定义定单的格式
数据内容的格式 显示格式各自自己定
<3>专门用XML来交换数据的软件
DOTNET (数据库的应用上 服务器的数据和客户端是以XML格式来交换和保存数据的)
WEB SERVICES (web服务的应用) URL
XML格式+HTTP协议
无线通讯 WML (XML)
<4>自己设计XML的用途
对XML文件的结构的限制
<1> DTD (Document Type Define) 文档类型定义
<2> Schema
XML文件的结构
a)层次结构
b)每种元素的数据类型
<例子> ***************************************************DTD
<!ELEMENT 公司 (员工+)>
公司元素是由员工元素组成的,
+ (>=1个)
<!ATTLIST 公司
名称 CDATA #REQUIRED
>
公司元素有一个属性叫名称 属性的数据类型是CDATA(属性是文本)
#REQUIRED 属性是必须写的
<!ELEMENT 员工 (姓名, 性别, 年龄, 部门, 加入本公司时间, EMail, 奖惩)>
员工元素是由姓名, 性别, 年龄, 部门, 加入本公司时间, EMail, 奖惩这些元素组成的
并且每个元素只有1个, (,,,) 代表顺序关系
<!ATTLIST 员工
id CDATA #REQUIRED
>
员工元素有一个属性叫id 属性的数据类型是CDATA(属性是文本)
#REQUIRED 属性是必须写的
<!ELEMENT 姓名 (#PCDATA)>
姓名元素的数据类型(#PCDATA),是文本,而不是子元素
<!ELEMENT 奖惩 EMPTY>
奖惩元素是个空元素
XML文件如何引用DTD文件
<1>内部引用
<2>外部引用
dtd是个单独的文件 ,在xml说明使用它
<!DOCTYPE 根元素 SYSTEM "外部DTD文件名">
xml文件的有效性--- xml能够通过DTD的验证
<!ELEMENT 公司 (员工+)> 公司元素是由员工元素(>=1 +)组成的,
<!ELEMENT 公司 (员工*)> 公司元素是由员工元素(>=0 *)组成的,
<!ELEMENT 公司 (员工?)> 公司元素是由员工元素(0或1 ?)组成的,
<!ELEMENT 公司 (员工)> 公司元素是由员工元素(1个)组成的
<!ATTLIST 公司
名称 CDATA #REQUIRED
>
公司元素有一个属性叫名称 属性的数据类型是CDATA(属性是文本)
#REQUIRED 属性是必须写的
<!ATTLIST 公司
名称 CDATA #IMPLIED
>
公司元素有一个属性叫名称 属性的数据类型是CDATA(属性是文本)
#IMPLIED 属性是可有可无的
定义属性的数据类型可以是 CDATA 文本类型
ID 属性的值具有唯一性(取值的第一个字符必须是字母)
IDREF ID的引用表示对ID类型属性的引用(类似于外键)
<!ATTLIST 员工
性别 (男|女) #REQUIRED
> (男|女) 表示属性的值是在多个值中选1个
定义元素的数据类型可以是 (#PCDATA) 文本
EMPTY 空元素
ANY 可以使文本也可以是子元素
DTD的缺点是数据类型太少,DTD文件不是一个XML文件
DTD 逐渐会 被 SChema技术给取代
>>>>>>> 写DTD的时候 元素的限制少
属性的限制丰富 适当的做一些属性,而不全是元素
最后一个问题 命名空间 *********************************
<table>
<tr><td>苹果</td></tr>
<tr><td>香蕉</td></tr>
</table>
<table>
<name>方桌</name>
<height>12</height>
</table>
命名空间 <h:table xmlns:h="http://www.w3c.com/html4.0">
<tr><td>苹果</td></tr>
<tr><td>香蕉</td></tr>
</h:table>
xmlns xml的命名空间 h代名词 h代表这个网址"http://www.w3c.com/html4.0"
<f:table xmlns:f="http://www.mycom.com/furniture">
<name>方桌</name>
<height h:unit="英寸">12</height>
</f:table>
目的是来区分标记,让同名的标记可以使用
类似于java的包package
import java.sql.*;
import java.util.*;
java.util.Date
java.sql.Date