2007年5月4日星期五

XSL 简明教程(二)—— XPath 简明教程(1)

什么是 XPath

简单的归纳一下,我们可以从下列几个方面来理解什么是 XPath:

  • XPath 是一项 W3C 推荐标准。
  • XPath 是定义 XML 文档中的组成部分的一种语法。
  • XPath 通过使用路径表达式在 XML 文档中遍历。
  • XPath 具有包含了大量标准函数的库。
  • XPath 是 XSLT 的主要元素。

XPath 于 1999 年十一月 16 日正式成为 W3C 的推荐标准,它被设计来供 XSLT、 XPointer 以及其它 XML 分析程序使用。作为一种可以在 XML 文档中查找信息的语言, XPath 通常被用于在 XML 文档中遍历和定位元素和属性。XPath 使用路径表达式在 XML 文档中定位节点或者节点的集合,这些路径表达式看起来和人们熟悉的计算机文件系统的路径非常相似。XPath 还包含了一百多个内建函数,功能涵盖了字符串、数值、日期和时间、节点和 QName、序列、布尔等各种数据类型的处理等等。更重要的是, XPath 是 XSLT 标准的主要元素,离开了 XPath,人们将无法创建 XSLT 文档。更进一步,像 XQuery 和 XPointer 这样的标准都是构建在 XPath 的表达式基础上的, XQuery 1.0 和 XPath 2.0 更是共享了相同的数据模型并支持相同的函数和操作符。可以这么说,要想有效的驾驭 XML,深入理解和掌握 XPath 是不可或缺的基础。

XPath 术语

节点(Nodes)

节点(nodes)是 XPath 最基本的概念。在 XPath 中,有七种类型的节点,它们分别是:元素(element)、 属性(attribute)、 文本(text)、 命名空间(namespace)、 处理指令(processing-instruction)、 注释(comment)以及文档(document)节点。我们知道,XML 文档可以被看作是一棵由节点组成的树,因此文档(document)节点有时也称为根(root)节点。

为了能较为直观的理解 XPath 中节点的概念,请看下面的 XML 实例:

在这个例子中,<bookstore> 是一个 document 节点;<author>易中天</author> 是一个 element 节点;而 lang="zh_CN" 则是一个 attribute 节点。我们可以依此类推得到其它的节点。

具有原子性的值(Atomic values)

所谓具有原子性的值(atomic values),指的是没有子节点和父节点的节点。在上面的例子中,25.00 以及 "zh_CN" 都符合 atomic values 的定义。

项目(Items)

节点(nodes)和具有原子性的值(atomic values)统称项目(items)。

节点之间的关系

父节点(Parent)

每个元素(element)或属性(attribute)都有一个父节点(parent)。我们仍然沿用刚才的例子,元素 book 是元素 titleauthoryear 以及 price 的父节点。

子节点(Children)

Element 节点可以有 0 到多个子节点(children)。上面的例子中元素 titleauthoryear 以及 price 都是元素 book 的子节点。

兄弟节点(Siblings)

具有相同父节点的节点相互是兄弟节点(siblings)。这里,元素 titleauthoryear 以及 price 彼此都是兄弟节点。

祖先(Ancestors)

一个节点的父节点、父节点的父节点、依次类推,都称为该节点的祖先(ancestors)。这里,元素 title 的祖先是元素 bookbookstore

后代(Descendants)

一个节点的子节点、子节点的子节点、依次类推,都称为该节点的后代(descendants)。这里,元素 bookstore 的后代有元素 booktitleauthoryear 以及 price


转载请注明“转自粲言堂 http://xuecan.blogspot.com/”。


Copyright (C) 2007, XUE Can.

Creative Commons License 本博客作品(包括但不限于文字、图像、音频、视频以及动画),采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。 转载请注明“转自粲言堂 http://xuecan.blogspot.com/”。