您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 宣城分类信息网,免费分类信息发布

XPath语法

2024/3/1 4:35:42发布20次查看
在sql server 2005中,for xml 功能得到了增强,它有了对根元素和元素名称的新的选项、使用for xml 调用以便你可以建立复杂的层次关系的能力、和一个新的使得你可以定义将要使用xpath 语法来提取的xml结构的path 模式,如下面的示例所示: select productid
在sql server 2005中,for xml 功能得到了增强,它有了对根元素和元素名称的新的选项、使用for xml 调用以便你可以建立复杂的层次关系的能力、和一个新的使得你可以定义将要使用xpath 语法来提取的xml结构的path 模式,如下面的示例所示:
select productid as '@productid',
productname as 'productname'
from products
for xml path ('product'), root ('products')
这个查询返回下面的xml:
widget
sprocket
除了增强sql server 2000已推出的xml功能,sql server 2005增加了一个新的、本地的xml 数据类型,使得你可以为xml数据创建变量和列,如下面的示例所示:
create xml schema collection productschema as
'
'
你可以使用xml 数据类型来存储数据库中的文档或数据。列和变量可以用于非类型化的xml或类型化的xml,后者是对一个xml schema 定义(xml schema definition ,xsd)的schema有效。如果要为数据验证进行定义,开发人员可以使用create xml schema collection 语句,如下面的示例所示:
在创建了一个schema 集合后,你可以通过参照schema集合将一个xml变量或列与它所包含的schema 声明结合起来,如下面的示例所示:
create table salesorders
(orderid integer primary key,
orderdate datetime,
customerid integer,
ordernotes xml)
类型化xml在插入值或更新值时对关联的schema 集合的声明进行验证,这使得可以为了遵从性检查或兼容性原因而加强关于xml数据的结构的业务规则。
xml 数据类型还提供了一些方法,使得你可以使用它们来查询和操纵实例的xml数据。例如,你可以使用query 方法来查询xml 数据类型的一个实例的xml数据,如下面的示例所示: [table][tr][td]declare @x xml
set @x=
'
kim abercrombie
margaret smith
'
select @x.query(
'
{
for $invoice in /invoices/invoice
return $invoice/customer
}
')
这个例子中的查询使用了一个xquery 表达式,这个表达式找出文档中的每一个invoice 元素,并返回一个包含每一个invoice 元素的customer元素的xml文档,如下面的示例所示:
kim abercrombie
  margaret smith
sql server 2005中的另外一个显著的与xml相关的特性是对xml索引的支持。你可以为类型化xml的列创建首要和次要的xml索引来增强xml查询性能,一个首要的xml索引是一个xml实例的所有节点的部分表示,查询处理器可以使用它来快速的找到一个xml值中的节点。在你创建了一个首要的xml索引之后,你可以创建次要的xml索引来提高特定的查询类型的性能。下面的示例创建了一个首要的xml索引,和一个path类型的次要xml索引,它可以提高使用xpath表达式来标识一个xml实例中的节点的查询的性能。
create primary xml index idx_xml_notes
on salesorders (notes)
go
create xml index idx_xml_path_notes
on salesorders (notes)
using xml index idx_xml_notes
for path
go
select productid as '@productid',productname as 'productname'from productsfor xml path ('product'), root ('products')
create xml schema collection productschema as''
create table salesorders(orderid integer primary key,orderdate datetime,customerid integer,ordernotes xml)
declare @x xmlset @x='kim abercrombie? ?? ?? ?margaret smith ? ?'select @x.query('{for $invoice in /invoices/invoicereturn $invoice/customer}')
create primary xml index idx_xml_notes on salesorders (notes) go create xml index idx_xml_path_notes on salesorders (notes) using xml index idx_xml_notes for path go
宣城分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录