msdn.microsoft/zh-cn/library/ms256069(VS.80).aspx
运算符及特殊字符:
运算符/特殊字符 | 说明 |
/ | 此路径运算符出现在模式开头时,表示应从根节点选择。 |
// | 从当前节点开始递归下降,此路径运算符出现在模式开头时,表示应从根节点递归下降。 |
. | 当前上下文。 |
.. | 当前上下文节点父级。百度文库xpath定位 |
* | 通配符;选择所有元素节点与元素名无关。(不包括文本,注释,指令等节点,如果也要包含这些节点请用node()函数) |
@ | 属性名的前缀。 |
@* | 选择所有属性,与名称无关。 |
: | 命名空间分隔符;将命名空间前缀与元素名或属性名分隔。 |
( ) | 括号运算符(优先级最高),强制运算优先级。 |
[ ] | 应用筛选模式(即谓词,包括"过滤表达式"和"轴(向前/向后)")。 |
[ ] | 下标运算符;用于在集合中编制索引。 |
| | 两个节点集合的联合,如://messages/message/to | //messages/message/cc |
- | 减法。 |
div, | 浮点除法。 |
and, or | 逻辑运算。 |
mod | 求余。 |
not() | 逻辑非 |
= | 等于 |
!= | 不等于 |
特殊比较运算符 | < 或者 < <= 或者 <= > 或者 > >= 或者 >= 需要转义的时候必须使用转义的形式,如在XSLT中,而在XMLDOM的scripting中不需要转义。 |
轴名称::节点测试[谓语]
在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或成为根节点)。
XPath的谓词即筛选表达式,类似于SQL的where子句.
轴 | 说明 |
ancestor:: | 上下文节点的上级。 上下文节点的上级由上下文节点的父级以及父级的父级等组成;因此,ancestor:: 轴总是包括根节点,除非上下文节点就是根节点。 |
ancestor-or-self:: | 上下文节点及其上级。 ancestor-or-self:: 轴总是包括根节点。 |
attribute:: | 上下文节点的属性。 除非上下文节点为元素,否则,此轴将是空的。 |
child:: | 上下文节点的子级。 子级是树中上下文节点以下紧邻的任何节点。但是,属性节点或命名空间节点均不属于上下文节点的子级。 |
descendant:: | 上下文节点的子代。 子代是子级或子级的子级,等等;因此,descendant:: 轴永远不会包含属性节点或命名空间节点。 |
descendant-or-self:: | 上下文节点及其子代。 |
following:: | 树中在上下文节点之后的所有节点,除了子代、属性节点和命名空间节点之外。 |
following-sibling:: | 上下文节点的所有后续同辈。 following-sibling:: 轴只标识出现在树中上下文节点之后的父节点子级。该轴不包括所有出现在上下文节点之前的其他子级。 如果上下文节点是属性节点或命名空间节点,following-sibling:: 轴是空的。 |
namespace:: | 上下文节点的命名空间节点。 每个处于上下文节点范围内的命名空间都有一个命名空间节点。 除非上下文节点为元素,否则,此轴将是空的。 |
parent:: | 上下文节点的父级(如果有)。 父级是树中上下文节点以上紧邻的节点。 |
preceding:: | 树中在上下文节点之前的所有节点,除了上级、属性节点和命名空间节点之外。 有一种方法是,将 preceding 轴看作是内容全部出现在上下文节点开始之前的所有节点。 |
preceding-sibling:: | 上下文节点的所有前接同辈。 preceding-sibling:: 轴只标识出现在树中上下文节点之前的父节点子级。该轴不包括所有出现在上下文节点之后的其他子级。 如果上下文节点是属性节点或命名空间节点,preceding-sibling:: 轴是空的。 |
self:: | 只是上下文节点本身。 |
名称测试
名称 | 返回 | 示例 |
*(星号) | 对于任何主要节点类型的节点,返回 True。 | ancestor::* 选择上下文节点的所有上级。 attribute::* 选择上下文节点的所有属性。 namespace::* 选择上下文节点的所有名称属性。 |
QName | 对于任何扩展名称等于 QName 指定的扩展名称的主要节点类型节点,返回 True。 | child::para 选择所有属于上下文节点子级的 <para> 元素节点。如果上下文节点没有 <para> 子级,则选择一个空节点集。 |
NCName:* | 对于任何扩展名称包含 NCName 展开到的命名空间 URI 的主要节点类型节点(与本地名称无关),返回 True。 | |
节点类型测试
节点类型 | 返回 | 示例 |
comment() | 对注释节点返回 True。 | following::comment() 选择所有出现在上下文节点之后的注释节点。 |
node() | 对任何类型的节点返回 True。 | preceding::node() 选择所有出现在上下文节点之前的节点。 |
processing-instruction() | 对处理指令节点返回 True。 | self::processing instruction() 选择上下文节点中的所有处理指令节点。 |
text() | 对文本节点返回 True。 | child::text() 选择属于上下文节点子级的文本节点。 |
优先级顺序
(从最高优先级到最低优先级)的定义如下表所示。
优先级 | 字符 | 用途 |
1 | ( ) | 分组 |
2 | [ ] | 筛选器 |
3 | / // | 路径运算 |
分组运算符 () 仅适用于顶级路径表达式。例如,(//author/degree | //author/name) 是有效的分组运算,但 //author/(degree | name) 不是。
筛选模式运算符 ([]) 的优先级高于路径运算符(/ 和 //)。例如,表达式 //comment()[3] 选择相对于文档中任意位置备注的父级索引等于 3 的所有备注。此表达式与表达式 (//comment())[3] 不同,后者选择相对于父级的所有备注集中的第三个备注。前一个表达式可以返回多个备注,后一个表达式只能返回一个备注。
String函数
concat | 返回参数的串联。string concat(string, string, string*) |
contains | 如果第一个参数字符串包含第二个参数字符串,则返回 true;否则,返回 false。 |
normalize-space | 返回去除了空白的参数字符串。 |
starts-with | 如果第一个参数字符串以第二个参数字符串开头,则返回 true;否则,返回 false。 |
string | 将对象转换为字符串。 |
string-length | 返回字符串中的字符数。 |
substring | 返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。 |
substring-after | 返回第一个参数字符串中第一次出现第二个参数字符串之后的子字符串。 |
substring-before | 返回第一个参数字符串中第一次出现第二个参数字符串之前的子字符串。 |
translate | 返回第一个参数字符串,出现第二个参数字符串中的字符的位置替换为第三个参数字符串中对应位置的字符。 |
数值函数
ceiling | 返回不小于参数的最小整数。 |
floor | 返回不大于参数的最大整数。 |
number | 将参数转换为数字。 |
round | 返回与参数最接近的整数值。 |
sum | 返回节点集中所有节点的总和。每个节点在求和之前先转换为数值。 |
节点集函数
count | 返回 node-set 参数中的节点数。 |
id | 按照唯一 ID 选择元素。 |
last | 返回的数字等于表达式计算上下文的上下文大小。 |
local-name | 返回 node-set 参数中按文档顺序处于第一位的节点的扩展名称本地部分。 |
name | 返回的字符串包含一个 QName,该 QName 表示 node-set 参数中按文档顺序处于第一位的节点的扩展名称。 |
namespace-uri | 返回 node-set 参数中按文档顺序处于第一位的节点的扩展名称的命名空间统一资源标识符 (URI)。 |
position | 返回节点在父级中的索引号。 |
布尔函数
boolean | 将参数转换为布尔值。 |
false | 返回 false。 |
lang | 如果上下文节点的 xml:lang 属性与参数字符串相同,则返回 true。 |
not | 如果参数为 false,则返回 true,否则,返回 false。 |
true | 返回 true。 |
XSLT 函数
名称 | 描述 | ||||||||||
current() | 返回当前节点作为唯一成员的节点集。 <xsl:apply-templates select="//glossary/item[@name=current()/@ref]"/> 处理所有具有 <glossary> 父元素并且 name 属性值等于当前节点的 ref 属性值的 <item> 元素。这不同于 <xsl:apply-templates select="//glossary/item[@name=./@ref]"/> ,后者表示等同于 <xsl:apply-templates select="//glossary/item[@name=@ref]"/> 所以,将处理所有具有 <glossary> 父元素并且 name 属性和 ref 属性的值相同的 <item> 元素。 | ||||||||||
document() | 用于访问外部 XML 文档中的节点。 node-set document(object, node-set?) <xsl:value-of select="document('l')/celsius/result[@value=$value]"/> | ||||||||||
element-available() | 检测 XSLT 处理器是否支持指定的元素。 | ||||||||||
format-number() | string format-number(number,format,[decimalformat])
| ||||||||||
function-available() | 检测 XSLT 处理器是否支持指定的函数。 | ||||||||||
generate-id() | 返回唯一标识指定节点的字符串值。 | ||||||||||
key() | 检索以前使用 <xsl:key> 语句标记的元素。 此示例定义名为 "title-search" 的键,用于查 author 属性等于 "David Perry" 的 book 元素。 <xsl:key name="title-search" match="book" use="@author"/> <xsl:for-each select="key('title-search', 'David Perry')"> <div><xsl:value-of select="@title"/></div> </xsl:for-each> | ||||||||||
node-set | 将树转换为节点集。产生的节点集总是包含单个节点并且是树的根节点。 | ||||||||||
system-property() | 返回系统属性的值。 | ||||||||||
unparsed-entity-uri() | 返回未解析实体的 URI。 | ||||||||||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论