|
在内的布尔值谓词
所有关系运算符
=, !=, <, <=, >, >=
算术运算符
+, -, *, div
显式转换函数
number()、string()、Boolean()
布尔运算符
AND, OR
布尔函数
true()、false()、not()
XPath 变量
不支持的功能
下表显示 SQL Server 2000 中没有实现的 XPath 语言的功能。
功能
项目
轴
ancestor、ancestor-or-self、descendant、descendant-or-self (//)、following、following-sibling、namespace、preceding、preceding-sibling
数值谓词
算术运算符
mod
节点函数
ancestor、ancestor-or-self、descendant、descendant-or-self (//)、following、following-sibling、namespace、preceding、preceding-sibling
字符串函数
string()、concat()、starts-with()、contains()、substring-before()、substring-after()、substring()、string-length()、normalize()、translate()
布尔函数
lang()
数字函数
sum()、floor()、ceiling()、round()
Union 运算符
|
XPath 查询是以表达式的形式指定的。位置路径是一种比较常用表达式,用以选择相对于上下文节点的节点集。位置路径表达式的求值结果是节点集。
XML 文档 <root> <order productid="Prod-28" unitprice="45.6" quantity="15"> <discount>0.25</discount> </order> <order productid="Prod-39" unitprice="18" quantity="21"> <discount>0.25</discount> </order> <order productid="Prod-46" unitprice="12" quantity="2"> <discount>0.25</discount> </order> </root>
下面是查询该XML 文档的XPath位置路径表达式,它的含义是返回根节点下所有<ROOT>子元素下的ProductID属性的属性值为 "prod-39"的 <order> 元素。

位置路径的类型
可以分为绝对位置路径和相对位置路径。
绝对位置路径以文档的根节点开始,由斜杠 (/) 组成,后面可以是相对位置路径。斜杠 (/) 选定文档的根节点。
相对位置路径以文档的上下文节点(Context)开始,由斜杠 (/) 所分开的一个或多个位置步骤序列组成。每个步骤都选定相对于上下文节点的节点集。初始步骤序列选定相对于上下文节点的节点集。节点集中的每个节点都用作后续步骤的上下文节点。由后续步骤标识的节点集联接在一起。例如,child::Order/child::OrderDetail 选定上下文节点的<order> 子元素的 <orderdetail> 子元素。
位置步骤 (绝对或相对)位置路径由包含下面三部分的位置步骤组成:
轴
轴指定位置步骤选定的节点与上下文节点之间的树关系。SQL Server 2000 支持 parent、child、attribute 及 self 轴。
如果在位置路径中指定 child 轴,查询选定的所有节点都将是上下文节点的子节点。 比如说要查询从当前的上下文节点中选定所有 <Order>节点的子节点,可以使用 child:: Order
如果指定 parent 轴,选定的节点将是上下文节点的父节点。 比如说要查询从当前的上下文节点中选定所有 <Order>节点的父节点,可以使用 parent:: Order
如果指定 attribute 轴,选定的节点是上下文节点的属性。 比如说要查询从当前的上下文节点中选定所有 <Order>节点的属性,可以使用 attribute:: Order
节点测试
节点测试指定位置步骤选定的节点类型。每个轴(child、parent、attribute 和 self)都具有主要节点类型。对于 attribute 轴,主要节点类型是 <attribute>。对于 parent、child 和 self 轴,主要节点类型是 <element>。
例如,如果位置路径指定 child::Order,则将选定上下文节点的 <Order> 子元素。因为 child 轴以 <element> 为其主要节点类型,而且如果Order是 <element> 节点,则节点测试Order为 TRUE。
选择谓词(零个或多个)
谓词围绕着轴筛选节点集。在 XPath 表达式中指定选择谓词与在 SELECT 语句中指定 WHERE 子句相似。谓词在括号中指定。应用在选择谓词中指定的测试将对节点测试返回的节点进行筛选。对于要筛选的节点集中的每个节点,在对谓词表达式取值时将此节点作为上下文节点,将节点集中的节点数作为上下文大小。如果谓词表达式对此节点取值为 TRUE,则此节点将包括在最后所得到的节点集中。
例如: 1. Child::Order [attribute::ProductID="Prod-39"] 表示从当前的上下文节点中选定ProductID属性值为Prod-39的所有 <order>子节点。
2. Child::Order [child:: Discount] 表示从当前的上下文节点中选定包含一个或多个 <Discount> 子节点的所有 <Order> 子节点。
3. Child::Order [not(child:: Discount)] 表示从当前的上下文节点中选定不包含 <Discount> 子节点的所有 <Order> 子节点。
位置步骤的语法
是用两个冒号 (::) 分开的轴名和节点测试,后面是分别放在方括号中的零个或多个表达式。
例如,在 XPath 表达式(位置路径)child::Order[attribute::ProductID="prod-39"]中,选定上下文节点的所有 <order> 子元素。然后将谓词中的测试应用于节点集,将只返回 ProductID属性的属性值为 "prod-39"的 <order> 元素节点。
缩略语法
Sqlservr2000支持下面的位置路径缩略语法: attribute::可以缩略为 @。 比如:[attribute::ProductID="Prod-39"] 可以缩写成 [@ProductID =" Prod-39"]
child::可以在位置步骤中省略。 比如:位置路径child::ROOT/child::Orde可以缩写成 ROOT /Order
self::node() 可缩略为一个句点 (.),而 parent::node() 可缩略两个句点 (..)。
所以 /child::ROOT/child::Order[attribute::ProductID="prod-39"]也可以缩写成 /ROOT/Order[@ProductID="prod-39"]
上一页 [1] [2] [3] [4] [5] [6] [Access]sql随机抽取记录 [Access]ASP&SQL让select查询结果随机排序的实现方法 [互联动态]20008年最紧缺的IT人才和最热门七大技术 [聊天工具]Office 2000 服务器扩展 [聊天工具]最cool的p2p软件——edonkey2000 [聊天工具]企业邮件系统的利器----FoxMail Server [系统软件]八招秘籍保证Windows 2000安全 [系统软件]OPEN SERVER 5.0.5安装EXP300阵列柜 [系统软件]SQL语句性能优化--LECCO SQL Expert [系统软件]关于Windows2000Server的灾难恢复
|