### XSLT 轻松入门第四章：XPath 的语法

4.XPath 的语法
我们在前面已经提到过，XPath 是用来帮助 XSLT 在 XML 源文档中查找定位信息的语言。在实际使用过程中，XPath 和 XSLT 总是混在一起使用，在上面一章的语法例子中我们已经有使用到 XPath 的语法，只是没有明确点出。但 W3C 将它们分成两个标准，所以我们也将它们拆成两章来讲解。
4.XPath 的语法
4.1 当前位置
4.2 寻址操作
4.3 运算符
4.4 功能函数
4.1 当前位置
当我们使用 XSLT 处理 XML 源文档是，我们用 Context 来表示当前正在被模板处理的节点位置。比如 xsl:template match="/"语句中表示 Context 在文档的根(root)节点。我不知道如何准确的翻译 Context 这个词，它类似于 C 语言里的指针，表示程序当前运行的位置。理解 Context 对于正确处理 XSL 模板非常重要，当您的 XSL 模板输出的文档和您想要的不一样，最先应该分析的就是 Context 在哪里。
Location Paths 是用于设定你想要寻找的 Context 节点位置。就类似 DOS 的目录命令。我们看个例子
<xsl:for-each select="child::PEOPLE/descendant::PERSON">
其中 child::PEOPLE/descendant::PERSON 就是 XPath 语法，这个表达式就是一个 Location Paths，代码说明要显示所有 PEOPLE 元素的子元素和所有 PERSON 元素的子元素。通常我们会采用更简单的写法：
<xsl:for-each select="PEOPLE//PERSON">
我们来解释 path 的两种表示方法："/"和"//"。
"/"是表示当前文档的节点,类似 DOS 目录分割符。例如：/PEOPLE 表示选择根节点下的 PEOPLE 元素；PEOPLE/PERSON 表示选择 PEOPLE 元素下所有的 PESON 子元素。
"//"则表示当前文档所有的节点。类似查看整个目录。例如：//PEOPLE 表示选择文档中所有的 PEOPLE 元素，无论它在什么层次；PEOPLE//PERSON 表示在 PEOPLE 元素下所有的 PERSON 元素，无论它的层次多深。