20.2.1 XML 简介
XML 是扩展标识语言(Extensible Markup Language) 的英文缩写。XML 语言是下一代大型Web 主导技术,它是一种基于SGML 的、简单灵活的语言,提供了比HTML 更为广泛的方法来描述文档内容,同时通过一种能够在所有计算机上运行、与平台和操作系统无关的方法,提供了描述元数据的机制。XML 不仅是一种技术,而是指一个技术组。XML 家族至少包括以下成员: 可扩展样式语言(eXtensible Style Language, XSL) XML 链接语言(XML Linking Language, 包括XPath, XLink 和XPointer) XML 名称空间(XML Namespace) XML 模式(Schema) 1 可扩展样式语言(eXtensible Style Language XSL)
在创建Web 应用程序时,我们不仅关注应用程序的功能、安全性等问题,而且还迫切地希望Web 页面更漂亮,同时也要保证各种浏览器能够识别统一的数据显示格式。因此我们常常利用层叠样式表(Cascading Style Sheets, CSS) 来编排同一HTML 内容和格式。XSL 与XML 协同工作的方式和CSS 与HTML 协作的方式相类似。XSL 是实现XML 样式的语言,由它来定义一组规则以决定如何显示XML 文档的内容,以及显示哪些内容,从而将XML 语义转换为显示格式,正如人们在 Web 浏览器中所见到的显示式样一样。
在显示XML 文档内容时,XSL 处理器首先要查看XML 文档,并把该文档称为源文档,然后根据显示句法在源文档的基础上导出第三个实例。在下面的例子中 XSL 处理器根据student.xsl 的显示要求只显示源文档student.xml 中匹配元素 learning。
2 XML 链接语言(XML Linking Language ,包括XPath XLink 和 XPointer)
XML 链接主要包括三部分:XML Path 语言(XPath), XML Linking 语言(XLink), XML Pointer 语言(XPointer)。 XPath
其主要目的是进行部分(而不是全部)XML 文档寻址,用于XML 层次结构(树型结构)的搜索。 XLink
其主要是定义两个或多个数据对象或对象部分之间的关系,它要利用XML 文档的句法来创建结构,从而描述目前的HTML 的单向超链接以及更为复杂的多端或多类型链接。 XPointer
其建立于XPath 基础之上,以支持XML 内部结构中的寻址。所以可以使用XML 标记链接到另一个文档的特殊部分。 3 XML 名称空间(XML Namespace)
XML 名称空间是一组名字,由URI 索引确定,在XML 文档中用作元素类型和属性名。名称空间为使用不同名字的XML 文档的内部结构块提供相互交流的环境。
4 XML 模式(Schema) XML 模式主要用来控制XML 文档内的结构和内容的相互关系。
20.2.2 XML 的优点
XML 能够实现Web 上和企业内的许多应用,应该指出的是任何标准的交换语言都可以轻易地交换数据。这些应用主要表现在以下诸多方面: 事件驱动的数据库交互 应用程序间的通信 定制出版 与媒体无关的全球出版 使用元素名和元数据的精确数据搜索和检索 组件/媒体管理 后处理 电子文档交换 20.2.3 XML 支持Web 发布的体系结构
XML 作为一种基于SGML 的、简单灵活的语言其设计目标与SGML 发明者的最初动机是一致的,即文档描述与应用功能分开的原则。在这里文档是指能够根据需要结合或倾倒各种数据块的容器,它可以存储相当长的一段时间,也可以只在与人打交道的那段时间里存在。XML 文档也包含了多种数据类型,比如传统发布程序识别的文本、图像、视频剪辑等,同时也可以包含从各种不同的数据库中检索出来的数值数据。文档只是暂时存在的,它可以只持续一个事务那么长,而且只能由软件程序浏览。
在传统的发布模型中,应用程序从客户机上转换数据开始,但是在由XML 支持的多层体系结构(如图20-1) 中应用程序则是从查询开始。客户机首先开始查询,从而使查询指向中间层的应用服务器,然后再与数据中心或资料档案库后台进行通信。
中间应用层主要是决定如何与后台数据服务器通信并获取与客户查询相匹配的信息,同时将多个XML 文档或来自多个XML 文档的代码段合并成一个大的文档,并作为客户的查询结果显示到客户机上。
XML 支持以两种不同的格式从资料库中获取数据。XML 数据可能来自一个对象或者来自一个关系数据库。一般来说,关系数据都具有一定的由关系数据库定义的特定格式,应用服务器可以有一个内置的转换引擎用来转换这些特定格式的关系数据,或者调用一个外部转换引擎。现在大多数关系数据库厂商正在添加一个XML 层,这个XML 层提供数据转换功能,比如XML Translation (XML 转换器下)。一节我们将对如何实现XML 文档与关系数据之间的数据交互进行介绍。