WEB开发网
开发学院数据库MSSQL Server SQLXML系列之一:SQLXML初体验——用XML代替SQL来... 阅读

SQLXML系列之一:SQLXML初体验——用XML代替SQL来操作数据库

 2008-12-06 10:16:03 来源:WEB开发网   
核心提示: 相信大家不会对这个感到陌生,我们通过在Select语句上运用FOR XML字句把原本已RowSet体现的结构转换成一个XML,SQLXML系列之一:SQLXML初体验——用XML代替SQL来操作数据库(6),仔细分析这个Select渔具,你会发现而通过 上的方式获得的结构是完全符合我们上面

相信大家不会对这个感到陌生,我们通过在Select语句上运用FOR XML字句把原本已RowSet体现的结构转换成一个XML。仔细分析这个Select渔具,你会发现而通过 上的方式获得的结构是完全符合我们上面定义的Mapping Schema的。

接下来我们来通过第二种方式查询——Mapping Schema结合XPath的Template 文件:Template/Order_Xpath.xml。

<?xml version="1.0" encoding="utf-8" ?>
<orders xmlns:sql="urn:schemas-microsoft-com:xml-sql">
 <sql:header>
  <sql:param name="orderID" >1</sql:param>
 </sql:header>
 <sql:xpath-query mapping-schema="http://localhost/Artech.OrderManagementSchemaOrder.xsd">
  /order[@id=$orderID or $orderID = '0']
 </sql:xpath-query>
</orders>

我们通过sql:header定义一个参数OrderID,相应的查询被置于 <sql:xpath-query〉中()注意上面基于SQL的查询对于的是<sql:query>。通过mapping-schema运用我们定义的Mapping Schema。通过一个XPath定义我们的查询条件——如果传入的参数时’0’)(虽然OrderID在DB中是Int,但是转化成XML,我们不能区分它到底是Int还是String,而一般地,XML 把它当成Sring处理)则返回所有Order,否则返回对应ID的Order。

其实我们我们可以这样来理解广义的查询——查询时把筛选条件运用于某个具有预先知道的结构的数据集而获得的复合你指定的筛选条件的数据集。首先查询是机遇某种结构的,举个例子,在电影院中,你可以通过你的电影票很快找到你所需要的座位,是因为电影院是按照排和列来安置作为的,同样我们可以通过标准的SQL的Where语句很快地获取我们需要的结果集,这是因为所有的关系型DBMS都是同一种形如矩阵的结构来存储数据的。我们可以通过XPath在XML中帅选我们希望的结果也是一样的道理。所以对于我们可以通过XPath来从DB中查询数据,便不会感到奇怪了——首先Mapping Schema通过Mapping机制实际上给我们提供了XML形式的DB,而XPath就像是XML DB中的Where子句一样。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQLXML 系列 之一

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接