什么叫XPath
  XPath(可拓展途径) 是给 XSL 变换[XSLT]和 XPointer [XPointer]的共享资源作用出示一个同用的语法及词义的結果。XPath的关键的目是用以对 XML 文本文档元器件寻址方式。在适用这一关键目地的另外,它也为字符串数组,数据和布尔的实际操作出示了基础方式。XPath 应用简要的、非 XML 语法便于於在 URIs 和 XML 属性值之内应用 XPath,XPath 对 XML 文本文档的抽象性的、逻辑性的构造并非它的表层语法开展实际操作,XPath 的姓名来源于它在 URL 中作为对 XML 文本文档的层级的构造开展导航栏一个途径标示。
除开用作寻址方式外,XPath 也被设计方案成便于它有能被用以配对的一个当然的非空子集(检测一个节点是不是配对一个方式);XSLT中叙述了 XPath 在这些方面的应用。 
  XPath 将一个 XML 文本文档建模变成一棵节点树,有不一样种类的节点,包含原素节点,属性节点和文章正文节点。XPath 界定了一种方式 来测算每种的节点的字符串值。一些节点的种类也是有姓名。XPath 充足适用 XML 类名[XML Names]。那样,节点的姓名被建模成由一个局城一部分和很有可能为空的类名 URI 构成的对;这被称作后缀名。

XPath回到的种类
  1:节点结合(混乱的、无反复的节点结合) 
  2:布尔(真或假) 
  3:数据(一个浮点数据) 
  4:字符串数组(UCS 标识符的次序) 
详细地址途径
详细地址途径是Xpath用以精准定位的一条句子,基础的英语的语法以下:
/ 选择XML文本文档的根结点 
/* 选择根结点的全部子节点,
*配对任意子节点 
/x 选择根结点的全部x原素 
//book 选择根结点的全部子孙后代节点中的book原素 
//@id 选择带有id属性的子节点 
para[1] 选择前后文节点的第一个 para 小孩
//vendor[@id='id1_2']/book 选择合乎“属性id='id1_2'”的全部book原素 
/bib/vendor/book[year>2002] 选择合乎“原素year>'2002'”的全部book原素 
text() 选择前后文节点的全部的文章正文节点小孩
@name 选择前后文节点的 name 属性
@* 选择前后文节点的全部的属性
*/para 选择前后文节点的全部的 para 小孙子
/doc/chapter[5]/section[2] 选择doc的第五个 chapter 的第二个 section
.//para 选择前后文节点的 para 原素子孙后代
para[@type="warning"] 选择的前后文节点的全部的有属性 type 且数值 warning 的 para 小孩
chapter[title="Introduction"] 选择前后文节点的 chapter 小孩假如它有一个或好几个 title 小孩且字符串数值 Introduction
employee[@secretary and @assistant] 选择前后文节点的全部不仅有 secretary 属性又有 assistant 属性的 employee 小孩
chpater[title] 选择的前后文节点中有一个或一个之上 title 小孩的 chpater 小孩
1:child 是默认设置轴。比如,详细地址途径 div/para 是 child:iv/child::para 的简称。
2:属性也是有简称方式: attribute:: 能被缩写成 @。比如,详细地址途径 para[@type="warning"] 为 child::para[attribute::type="warning"] 的简称,也就是选择有 type 属性且属性数值 warning 的 para 小孩。
3:// 是 /descendant-or-self::node()/ 的简称。比如,//para 是 /descendant-or-self::node()/child::para 的简称,因而选择文本文档中全部的 para 原素(即便 para 原素是文本文档原素,也会被 //para 所选择,由于文本文档原素是根节点的小孩); div//para 是 div/descendant-or-self::node()/child::para 的简称,因而将选择 div 小孩的全部 para 子孙后代
关键库函数
节点结合涵数
last()回到一个数据,该数据相当于从表达式求值前后文中的前后文尺寸 
position()涵数回到一个数据,该数据等於从表达式求值前后文中的前后文部位
count(node-set)涵数回到在主要参数node-set中节点的数量
id(object)根据原素的唯一的ID选择她们
local-name(node-set?)回到一个节点的后缀名的局域网一部分
namespace-uri(node-set?)回到按照文本文档次序主要参数节点结合中的第一个节点的后缀名的类名 URI,除开原素节点和属性节点外涵数 namespace-uri 回到的字符串数组将为空
name(node-set?)回到一个字符串数组,字符串包含一个QName,它意味着按照文本文档次序主要参数节点结合中的第一个节点的后缀名,除开原素节点和属性节点外,由 name 涵数回到的字符串数组将与 local-name 涵数回到的字符串数组一样
字符串函数
string(object?)涵数将目标转化成标识符.
concat(string, string, string*) 涵数回到它的主要参数的联接
starts-with(string, string)假如第一个字符串数组主要参数以第二个字符串数组主要参数开始,starts-with 涵数回到真,不然,回到假
contains(string, string)假如第一个字符串数组主要参数包括第二个字符串数组主要参数,contains 涵数回到真,不然,回到假
substring-before(string, string)涵数回到第一个字符串数组主要参数在第二个主要参数初次出現以前的子字符串数组,或是,假如第一个字符串数组主要参数不包含第二个字符串数组主要参数则回到空字符串。比如,substring-before("1999/04/01","/") 回到 1999
substring-before(string, string)涵数回到第一个字符串数组主要参数在第二个主要参数初次出現以前的子字符串数组,或是,假如第一个字符串数组主要参数不包含第二个字符串数组主要参数则回到空字符串。比如,substring-before("1999/04/01","/") 回到 1999
substring( string , number , number? )涵数回到第一个字符串数组主要参数从第二个主要参数所特定的部位刚开始,以第三个主要参数为长短的子字符串数组。比如, substring("12345",2,3) 回到 "234"。要是没有第三个主要参数,则回到从第二个主要参数所特定的部位刚开始直至完毕。比如, substring("12345",2) 回到"2345"
string-length( string? )回到字符串数组中标识符的数量
normalize-space(string?)涵数回到空白符规范性 后的主要参数字符串数组,该规范性是消除带头及末尾的空白字及其用一个空白符更换持续的空白符
translate(string, string, string)涵数回到第一个主要参数的字符串数组,在其中有在第二个主要参数中出現的标识符都被在第三个主要参数中相对性应部位的标识符所更换。比如,translate("bar","abc","ABC") 回到字符串数组 BAr。假如,第二个主要参数里的标识符在第三个主要参数的相对性应部位沒有标识符(由于第二个主要参数里的字符串数组比第三个主要参数的字符串数组长),那麼,第一个主要参数里的哪个标识符将被移走。比如,translate("--aaa--","abc-","ABC") 回到 "AAA"。假如在第二个主要参数里的标识符出現超出一次,那麼,第一次的出現决策更换的标识符。假如第三个主要参数里的字符串数组比第二个主要参数的字符串数组长, 那麼,不必要的标识符将被忽视
布尔涵数
boolean(object)
not(boolean)
true()
false()
lang(string)
数据涵数
number(object?)函数参数依以下各类转化成数据
sum(node-set)对于在主要参数节点结合的每一个节点,sum 涵数回到节点字符串值转化成数据后的和
floor(number)涵数回到并不大於主要参数的整数金额的最大值 (最贴近于妈无穷)
ceiling(number)涵数回到很大於主要参数的整数金额的最少数 (最贴近于负无穷)
round(number) 涵数回到最贴近于主要参数的整数金额。如果有2个那样的数据,那麼,回到最贴近于妈无穷的哪个。假如主要参数是 NaN,那麼回到 NaN。假如主要参数是正无穷,那麼回到正无穷。假如主要参数是负无穷,那麼回到负无穷。假如主要参数是正零,那麼回到正零。假如主要参数是负零,那麼回到负零。假如主要参数小於零,但大於或等於 -0.5 ,那麼回到负零。
参考标准
XML See See http://www.w3.org/TR/1998/REC-xml-19980210
XML Nameshttp://www.w3.org/TR/REC-xml-names
XSLT See http://www.w3.org/TR/xslt
一部分参考XML 途径語言(XPath) 版本号 1.0