第二部分 JSP 技术和 XML 技术
第 5 章 XML 简介
本章前三节主要介绍关于XML 的基本知识 包括 XML 概念的简单介绍 XML 语法 规则的叙述 XML 相对于传统的网页标记语言的突出优点 XML 的文档类型定义 DTD XML 的数据模式问题 以及 XML 的形式方面的问题 XML 的形式问题是指 XML 文档的 显示 本章主要介绍了风格样式表语言CSS 以及可扩展的风格样式表语言 XSL 通过这一 章的学习 读者应当对XML 的基本概念和特点有所了解 并且能够书写结构良好的 XML 文档 并将文档通过加入风格样式表文件在浏览器中显示出来
本章后两节主要介绍了有关 HTML 到 XML 的过渡版本 XHTML 和新的无线应用 协议及其脚本语言 WML 的一些知识 XHTML 由 W3C 制定 于 2000 年 1 月成为 W3C 的推荐标准 它是 XML 显示语言的一种 是用 XML 重新定义了的 HTML 与 XHTML 一样 WML 其实也是 XML 的一种显示语言 它基于无线应用协议 WAP 的基础之上 而 WAP 是一种主要是为了实现无线通信工具的快捷的信息获取而制定的协议 WML 就是针 对这种要求而设计的 使用无线通信设备浏览WML 文件
实际上 本书不应该介绍 XML 语言的语法 但是因为本书的其他部分涉及了很多关 于XML 的知识 并要大量使用 XML 况且 XML 技术已经与 Java/J2EE/JSP 技术紧密地耦 合在一起 为了使得本书的体系结构完整起见 我们特意以一章的篇幅来介绍 XML 的基 础知识
XHTML 是 HTML 的扩展 是下一代网页语言的标准 JSP 技术同样可以与 XHTML 结合在一起 XHTML 与 XML 的关系十分密切 所以我们在这里也简单地介绍 XHTML 的概貌 让读者了解这种新技术 实际上 在XHTML 中使用 JSP 与在 HTML 中使用 JSP 没有任何区别 所以 我们没有就如何使得XHTML 与 JSP 技术结合做更多的讨论
WML 是 XML 的一个子集 它使得无线设备也可以像普通的电脑一样 上网浏览页面 只不过这些页面是由WML 构建的 而不是使用 HTML 的语法 WML 技术也可以与 JSP 技术结合在一起 我们可以使用JSP 程序生成动态的 WML 文件 再传送到无线设备中
应当说明 本章所介绍的内容是极其概括与肤浅的 目的在于帮助读者了解本书其它 部分的内容 它充其量只能够起到复习的作用 读者千万不要抱有这样的想法 以为读完 本章以后就可以掌握XML XHTML WML 了 读者如果希望完整地了解 XML 的全貌 还是需要阅读有关的专著
第二部分 JSP 技术和 XML 技术
5.1 XML 简介及其语法规则
5.1.1 XML 简介
XML 是 eXtensible Markup Language 的缩写 意为可扩展的标记语言 XML 是一套定 义语义标记的规则 这些标记将文档分成许多部件并对这些部件加以标识 它也是元标记 语言 即定义了用于定义其他与特定领域有关的 语义的 结构化的标记语言的句法语言 XML 由全球互联网协会(World Wide Web Consortium)在 1996 年底提出 有许多人会认为 XML 是由 HTML 所延伸出来的 是 HTML 的增强版
事实并非如此 XML 与 HTML 有着很大的差异 主要的区别如下
1 XML 是元标记语言 XML 不只是像超文本标记语言 Hypertext Markup Language HTML 或是格式化的程序 这些语言定义了一套固定的标记 用来描述一定数目的元素 如果标记语言中没有所需的标记 用户也就没有办法了 这时只好等待标记语言的下一个 版本 希望在新版本中能够包括所需的标记 但是这样一来就得依赖于软件开发商的选择 了
XML 是一种元标记语言 用户可以定义自己需要的标记 这些标记必须根据某些通用 的原理来创建 但是在标记的意义上 也具有相当的灵活性 例如 要处理与菜谱有关的 事情 需要描述菜的成分 数量 特色 价格 名称等 这就必须创建用于每项的标记 新创建的标记可在文档类型定义 Document Type Definition 在以后的篇幅中常简称为 DTD 中加以描述 现在 只需把 DTD 看作是一本词汇表和某类文档的句法
XML 定义了一套元句法 与特定领域有关的标记语言如 MusicML MathML 和 CFML WML 等都必须遵守 如果一个应用程序可以理解这一元句法 那么它也就自动地能够理 解所有的由此元语言扩展建立起来的语言 浏览器不必事先了解多种不同的标记语言使用 的每个标记 事实是 浏览器在读入文档或者是它的DTD 文档时才了解了给定文档所使用 的每一个标记
至于在浏览器中或者在其他设备上如何显示这些标记的内容 是通过附加在文档上的 另外的样式单描述语言提供的 如CSS 或者 XSL
2 XML 描述的是结构和语义 XML 标记描述的是文档的结构和意义 它不描述页 面元素的格式化 可用样式单(CSS)或者 XSL 为文档增加格式化信息 XML 文档本身只说 明文档包括什么标记 而不是说明文档看起来是什么样的 作为对照 HTML 文档包括了 格式化 结构和语义的标记 <B>就是一种格式化标记 它使其中的内容变为粗体
<STRONG>是一种语义标记 意味着其中的内容特别重要 <TD>是结构标记 指明内容是 表中的一个单元 事实上 某些标记可能具有所有这三种意义 <H1>标记可同时表示 20 磅的Helvetica 字体的粗体 第一级标题和页面标题
例如 在HTML 中 一首歌可能是用定义标题 定义数据 无序的列表和列表项来描 述的 但是事实上这些项目没有一件是与音乐有关的 用HTML 定义的歌曲可能如下
程序清单 5.1(song.html)
<dt>Hot Cop
<dd> by Jacques Morali Henri Belolo and Victor Willis
第 5 章 XML 简介
<ul>
<li>Producer: Jacques Morali
<li>Publisher: PolyGram Records
<li>Length: 6:20
<li>Written: 978
<li>Artist: Village People
</ul>
而在XML 中 同样的数据可能标记为 程序清单 5.2(song.xml)
<SONG>
<TITLE>Hot Cop</TITLE>
<COMPOSER>Jacques Morali</COMPOSER>
<COMPOSER>Henri Belolo</COMPOSER>
<COMPOSER>Victor Willis</COMPOSER>
<PRODUCER>Jacques Morali</PRODUCER>
<PUBLISHER>PolyGram Records</PUBLISHER>
<LENGTH>6:20</LENGTH>
<YEAR> 978</YEAR>
<ARTIST>Village People</ARTIST>
</SONG>
在程序清单5.2 中没有使用通用的标记如<dt>和<li> 而是使用了具有意义的标记 如
<SONG> <TITLE> <COMPOSER>和<YEAR>等 这种用法具有许多优点 包括源码易 于被人阅读 使人能够看出作者的含义 可以选择 XML 的元素名称 以便使其在附加的 上下文中具有额外的意义 例如 元素名称可以是数据库的域名 XML 比 HTML 更为灵 活而且适用于各种应用 因为有限数目的标记不必用于许多不同的目的
5.1.2 XML 的语法规则及其良构性
与 HTML 不同 XML 对于语法有着严格的规定 只有当一个 XML 文档符合 格式 良好 的基本要求时 处理程序才能对它加以分析和处理 格式良好的 这一标准通过对 XML 文档的各个逻辑成分和物理成分进行语法规定 保证了 XML 文档严密的条理性 逻 辑性和良好的结构性 从而大大提高了XML 应用处理程序处理 XML 数据的准确性和效率 实际上 格式良好 的要求就是XML 规范的语法要求 一个简单的检验方法就是用 Internet Explorer 5.01 以上版本的浏览器打开正在编辑的 XML 文档 如果报错 这个文档就不是 格 式良好的 XML 文档的结构包括逻辑结构和物理结构
逻辑结构
一个XML 文档通常以一个 XML 声明开始 通过 XML 元素来组织 XML 数据 XML 元素包括标记和字符数据 为了组织数据更加方便 清晰 还可以在字符数据中引入CDATA 数据块 并可以在文档中引入注释 此外 由于有时需要给 XML 处理程序提供一些指示 信息 XML 文档中可以还包含处理指令
具体说来 各个逻辑元素的作用和形式如下
第二部分 JSP 技术和 XML 技术
1. XML 声明
XML 声明是处理指令的一种 一个 XML 文档最好以一个 XML 声明作为开始 下面 是一个完整的XML 声明
<?xml version = "1.0" encoding = "GB2312" standalone = "no"?>
在一个XML 的处理指令中必须包括 version 属性 指明所采用的 XML 的版本号 而 且它必须在属性列表中排在第一位 standalone 属性表明该 XML 文档是否和一个外部文档 类型定义DTD 配套使用 encoding 属性则指明了数据所采用的编码标准 如果需要显示中 文 那么编码应该是GB2312 或者 GBK
2. 元素
元素是 XML 文档内容的基本单元 从语法上讲 一个元素包含一个起始标记 一个 结束标记以及标记之间的数据内容 其形式是
<元素标记>数据内容</元素标记>
对于标记有以下语法规定
(1) 标记必不可少 任何一个格式良好的 XML 文档中至少要有一个元素 (2) 大小写有别
(3) 要有正确的结束标记 结束标记除了要和起始标记在拼写和大小写上完全相同 还必须在前面加上一个斜杠 / 当一对标记之间没有任何文本内容时 可以不写结束标 记 而在起始标记的最后冠以斜杠 / 来确认 这样的标记称为 空标记
(4) 标记要正确嵌套 例如 <学生><姓名></学生><姓名>就是一个错误的嵌套 (5) 标记命名要合法 标记名应该以字母 下划线 _ 或冒号 开头 后面跟字 母 数字 句号 . 冒号 下划线或连字符 - 但是中间不能有空格 而且任何标记名 不能以 xml 或者 xml 大小写的任何组合 如 XML xML xmL 等等 起 始
(6) 有效使用属性 标记中可以包含任意多个属性 属性以名称/取值对出现 属性名 不能重复 名称与取值之间用等号 = 分隔 且取值用引号引起来
3. CDATA 节
在标记CDATA 下 所有的标记 实体引用都被忽略 而被 XML 处理程序当作字符数 据看待 CDATA 的形式如下
< [CDATA[ 文本内容 ]>
CDATA 的文本内容中不能出现字符串 ]]> CDATA 不能嵌套 4. 注释
在XML 中 注释的方法与 HTML 完全相同 用 < -- 和 --> 将注释文本引起来
在XML 中 注释的方法与 HTML 完全相同 用 < -- 和 --> 将注释文本引起来