XML概述
SGML
20世纪60年代,为促进数据交换和互操作,IBM提出了一种描述文本及其格式的通用标记语言GML(Generalized Markup Language)。
GML的重要概念:
—文件中能够明确的将标记与内容分开
—所有文件的标记使用方法均一致
1983年,在GML的基础上演化出了标准通用标记语言SGML(Standard Generalized Markup Language)。
1986年,SGML被ISO接纳为国际标准。
XML
为了解决HTML的不足,1996年,W3C(World Wide Web Consortium)开始探索应用SGML于web上的方法。
1998年2月,W3C发布了可扩展标记语言XML(eXtensible Markup Language)1.0规范。
HTML文档
HTML文档是用一系列“<”和“>”符号,把具有特定含义的英文字符串包括起来,构造成称为标记的元素来描述文档内容的。
<HTML>
<head>
<title>你好</title>
</head>
<body bgcolor=yellow text=blue>
<p>这是我的第一个网页</p>
</body>
</HTML>
- HTML标记—超链接
HTML文件中最重要的应用之一就是超链接。超级链接除了可链接文本外,也可链接各种媒体。
1.同一个文档内的链接
<a href=“#name1”>链接</a>
<a name=“name1”>目标位置</a>
2.不同文档之间的链接
<a href=“http://www.fzu.edu.cn”>链接</a>
3.发送电子邮件
<a href=“mailto:[email protected]”>链接</a>
4.链接FTP
<a href=“ftp://210.34.48.50”>链接</a>
- HTML标记—文本
文本在网页在一个很重要的位置,HTML定义了一系列标记来修饰文本。
1.换行标记<br>
2.段落标记<p>
3.预定义文本标记<pre>
4.居中对齐标记<center>
5.引用标记<blockquote>
6.标尺标记<hr>
7.地址标记<address>
8.注释标记 <!- -注释内容-->
9.标题文字标记<hn>
10.文字格式控制标记<FONT>
- HTML标记—表格标记
表格在网站应用中非常广泛,很多动态大型网站也都是借助表格进行页面排版。
表格的基本标记:
<table>
<th>
<tr>
<td>
- HTML标记—多媒体标记
通过多媒体标记,可以在网页中插入图片、声音、视频、Flash动画等。
多媒体标记:
<img>
<embed>
- HTML标记—表单标记
表单在Web网页中用来给访问者填写信息,从而能采集客户端信息,使网页具有交互的功能。
1.表单的基本标记<form><input>
2.菜单下拉列表框<select>
<option> </select>
3.多行的文本框<textarea></textarea>
XML
XML (eXtensible Markup Language,可扩展标记语言)是一种描述数据和数据结构的语言,可以保存在任何存储文本的文档中,具有人机可读、内容和显示相分离、可扩展、平台无关的特点。
张三
2007年3月2日
脸盆
20
李四
2007年3月8日
牙刷
10
====>>
<?xml version="1.0" encoding="GB2312" ?>
<销售清单>
<顾客>
<姓名>张三</姓名>
<日期>2007年3月2日</日期>
<商品>脸盆</商品>
<售价 售价单位="人民币">20</售价>
</顾客>
<顾客>
<姓名>李四</姓名>
<日期>2007年3月8日</日期>
<商品>牙刷</商品>
<售价 售价单位="人民币">10</售价>
</顾客>
</销售清单>
优点:
- 内容与显示相分离
- 内容被划分为多个部分,具有结构
- 赋予文档一定的语义
- 较容易被机器所处理
HTML和XML
HTML用来“如何显示数据”,它的作用只是用来修饰文档上面的数据,XML可以用来表示“数据是什么”。二者同为标记语言,有着相似的语法。
- HTML文档主要包含显示标记,主要为了浏览。
- HTML包含预定义的标记集。
- XML可定义自己的标记集,可扩展性强。
- XML标记表示了数据的逻辑结构,同时进行严格的语法和语义检查。
- XML文档将数据与显示格式分离。
XML相关技术
- XML数据类型定义与文档有效性验证技术(DTD、XML Schema)
- XML文档数据显示和转换技术(CSS、Data Island、XSLT)
- XML文档访问接口技术(DOM、SAX)
- XML的查询检索和链接技术(XPath、XLink、XPointer)
XML技术的应用
- XML数据库:
—NXD(Native XML Database)
—XEDB(XML Enable Database) - 地理标记语言:Geography Markup Language (GML)
- 网络内容聚合: Real Simple Syndication (RSS)
- Web服务:Web Service Description Language(WSDL)
- 工作流(业务流程执行语言):Business Process Execution Language(BPEL)
- 基于web的语音应用:VoiceXML
- 室内定位与导航:IndoorGML
- 虚拟三维城市:CityGML
- ……
XML基本语法
XML的语法基础
XML声明
<? xml version=“1.0”?>XML声明必须是文档的第一部分
声明以“<?”开始,以“?>”结束
属性有三个,一个为version,一个为standalone,另一个为encoding。
version:指明版本号
standalone:指明该文档是否是独立的
encoding:表示文件采用的字符集,默认为UTF-8。
XML标记
XML是基于文本的标记语言,标记(tag)就是XML文档最基本的组成部分。
XML的标记由用户自行规定。
XML标记负责提供和描述一个XML文件或数据包(XML实体)的内容结构。
-
命名规则
首字符是英文字母、汉字或_,后跟数字和其他字符。
严格区分英文字母的大小写。
不能独立使用数字作为名称。
不能使用“<”,”>”,”?”,”/”,”&”,”+”,”*”等符号作为标记名。 -
标记嵌套
XML只能有一个称为“根”的元素,其他标记必须写在该根标记内部。
标记可以包含值,也可以为空,也可以包含下一级标记。
某标记的所有子标记,必须写在该标记的起始和结束标记之间。 -
空标记
XML标记分为非空标记和空标记两种类型。
1.非空标记
<?xml version="1.0" ?>
<员工>
<姓名>李亮</姓名>
<性别>male</性别>
<出生日期>1978.2.5</出生日期>
</员工>
2.空标记
<book name=“XML实践教程” />
或者 <book name=“XML实践教程”> </book>
- 属性
属性对标记做进一步说明。如HTML中:
<img src=“” width=“” height=“”/>
例:
<cloth>
<shirt>
<name>金利来</name>
<size>170/92A</size>
<price currency=“RMB” unit=“yuan”>420.00</price>
</shirt>
</cloth>
-
属性的使用规则
- 属性必须定义在起始标记内。
- 属性名的命名规则和元素的命名规则相同,可以由字母、数字、中文及下划线组成,但必须以字母、中文或下划线开头。
- 属性名区分大小写。
- 属性值必须使用单引号或双引号。
- 如果属性值中要使用左尖括号"<"、右尖括号">"、连接符号"&"、单引号"‘“或双引号”""时,必须使用实体引用。
-
实体Entity
- XML文档可以包含若干个存储单元,这些存储单元叫做实体,由实体名称来标识。
- 在XML文档中,所有文本都会被解析器解析。但如果在实际运用中,需要在XML文档内引用左尖括号“<”、右尖括号“>”、连接符号“&”、单引号“‘”或双引号“””等特殊符号,可以用XML预定义实体来解决。
-
XML预定义实体
&: &
‘ : '
>: >
<: <
“: "
XML预定义实体的例子
<customer>
<name>Michael Calder </name>
<age> <30</age>
<address>
<street>44 McMahon 's Rd</street>
<suburb> Frankston</suburb>
</address>
</customer>
- 一般实体
声明方式
<!ENTITY 实体名 实体定义>
如:
<!ENTITY qhPress “清华大学出版社”>
引用方法:
&实体名;
如:
<press>&qhPress;</press>
- 参数实体
声明方式
<!ENTITY %实体名 实体定义>
如:
<!ENTITY %dataType “(#PCDATA)”>
引用方法:
%实体名;
如:
<!ELEMENT name %dataType;>
- 内部实体
内部实体:在文档内部进行实体的定义。
如:
<?xml version=“1.0” ?>
<!DOCTYPE books[
<!ENTITY qhPress “清华大学出版社”>
]>
<books>
…..
</books>
- 外部实体
外部实体:在文档外部进行实体的定义。
定义格式:
<!ENTITY 实体名 SYSTEM/PUBLIC URI NDATA 类型名>
例:
<!ENTITY fact SYSTEM “http://www.a.com/fact.xml”>
<!ENTITY src SYSTEM “pic.gif” NDATA GIF>
- 实体使用规则
引用实体前,必须先定义实体。
内部实体位于xml文档内部,外部实体独立于XML文档,是一个结构良好的XML格式文件。
实体引用不能出现递归引用。
- 处理指令PII
处理指令(Process Instrument),用于给XML解析器提供信息。
PI的命令格式以”<?”开始,并以”?>”结束
<?xml stylesheet type=“text/xsl” href=“d:\mystyle.xsl”?>
当XML元素被解析的时候,XML元素内部的文本也会被解析。只有在CDATA段之内的文本会被解析器忽略。CDATA段就是用来包含文本的方法,它通常用于建立代码的脚本。
一个CDATA段以“<![CDATA[”标记开始,以“]]>”标记结束。
<?xml version="1.0" encoding="gb2312"?>
<tests>
<test1>这是测试CDATA节的例子</test1>
<![CDATA[以下是一段JSP程序!
<% page contentType="text/html;charset=GB2312"%>
<% page language="java" %>...
]]>
<test2>测试示例结束</test2>
</tests>
-
注释
- 格式:
<!--注释的文字-->
- 规则:
–不能出现的XML文档的第一行。
–注释不能出现在标记”<“、”>”内。
–不能嵌套注释。
- 格式:
-
XML的文档结构
- 一个格式规范的XML文档会遵守W3C的XML1.0推荐标准的语法要求,它主要由序言(声明)和主体组成。
- 序言部分由XML声明、DTD声明、名称空间声明、调用转换文本语句行等构成。
- 主体部分至少包含一个根元素。
-
结构良好的XML文档
- 文档包含一个或多个元素
- 它只有一个包含所有其它元素的元素
- 元素相互间的嵌套要正确
- 用在开始和结束标识符中的元素名要精确匹配
- 属性名不能在同一元素开始标识符中出现多次
- 属性值必须括在单引号和双引号中
- 元素内容、属性值中引用的特殊字符,用实体引用替换。
-
名称空间的概念
- 名称空间是XML名称的集合。可以用于把元素及其属性限定在特定的名称空间中,以消除元素名称的不确定性。
- XML命名空间是XML元素解决多义性和名字冲突问题的方案。W3C组织的推荐书对“XML命名空间”(1999年1月14日)的解释:
XML命名空间是命名的汇集,它由URI(Uniform Resource Identifier,统一资源标识符)确定,在XML文件中作为元素类型和属性名使用。
URL(Uniform Resource Locator):统一资源定位符,一般用于指明互联网资源的位置。
URN(Uniform Resource Name):统一资源名称,一般用于指明互联网资源的名称。如 urn:ISBN:0-395-36341-1
-
名称空间的声明
声明的语法形式:
xmlns:prefix=“uri”
例:
<goods xmlns:s=“…”
xmlns:t=“…”
>
<s:shirt> <!-- shirt称为本地名(local name) -->
<!-- s:shirt称为完全限定名(Qname, Qualified Name) -->
<s:name>金利来</s:name>
</s:shirt>
<t:trousers>
<t:name>李宁</t:name>
</t:trousers>
</goods>
默认名称空间
不声明名称空间前缀
<a xmlns=“…”>
<b>….. //则a与b都在同一个名称空间下
</a>
仅应用在元素上
<a xmlns=“…” c=“5”>
<b>….. //则a与b都在同一个名称空间下
</a>
使用多个名称空间
<?xml version="1.0"?>
<cn:package xmlns:un="http://usa" xmlns:cn="http://china">
<cn:width cn:unit="cm">20</cn:width>
<cn:height un:unit="in">15</cn:height>
</cn:package>
语言标识
可以用xml:lang属性,指明某XML元素及其属性所用的自然语言。
如:
<book xml:lang=“en”>
<name>XML Guide</name>
</book>