您现在的位置: 设计龙 >> 数据库 >> mssql >> 正文

深入探讨SQL Server 2000对XML的支持

Author:x Link:天极 Hits: Update:2006-9-19 22:23:19
天极网摘 ViVi收藏夹 365Key 和讯网摘 POCO网摘

  四、XPath查询 架构和模板

  XPath查询也可以被内嵌进一个XML模板文件中,下面的代码是一个包含XPath查询的
简单的XML模板文件。



/Customer[@CustomerID='ALFKI']/Order

  这个查询使用了一个架构(schema)返回CustomerID号为ALFKI的用户的所有的订单,
如果想要使XPath语句运行,必须使用一个XDR架构文件映射不同的XML元素和属性到相
应的数据库表和字段名。下面给出了这个架构文件。


xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">







"idrefs" sql:id-prefix="Ord-" />






"Orders" sql:field="OrderID">
key-relation="Customers"
key="CustomerID"
foreign-relation="Orders"
foreign-key="CustomerID" />


key-relation="Customers"
key="CustomerID"
foreign-relation="Orders"
foreign-key="CustomerID" />


"id" sql:id-prefix="Ord-" />








key-relation="Orders"
key="OrderID"
foreign-relation="[Order Details]"
foreign-key="OrderID" />


key-relation="Orders"
key="EmployeeID"
foreign-relation="Employees"
foreign-key="EmployeeID" />

"[Order Details]"
sql:key-fields="OrderID ProductID">
sql:id-prefix="Prod-" />




sql:relation="[Order Details]"/>


sql:id-prefix="Emp-" />







  如果您想深入了解架构文件的话,请参看SQL Server 2000的用户文档或等待我的以后的文章。

  和内嵌在XML模板文件中的SQL查询语句一样,XPath查询语句使用urn:schemas-microsoft-com:xml-sql和sql 作为前缀,共同标示用在模板中的自定义元素和属性,对于XPath查询而言,我们使用一个名为xpath-query的元素来标识查询语法,这个元素也有一个名为mapping-schema的属性,用来标示相应用以映射表和字段到特定的XML项目的架构文件所在的路径。

  下面的代码给出了另一个使用更复杂XPath查询的模板文件。



/Customer[@CustomerID='ALFKI']/Order/
Employee[@LastName='Suyama']

当执行这个模板文件时,XPath查询返回与某个客户签下订单的雇员(employee)的姓名,结果如下:



  模板文件中使用的XPath查询也可以使用参数,处理过程很象在XSL样式表中使用参数一样。象XSL一样,使用$指定一个变量。下面的代码说明了如何在一个包含XPath查询的模板文件中整合变量。





{{should this be "listing6.xdr"?}}
/Customer/Order[@OrderID=$ID]

通过在URL中传递参数名和相应的参数值,我们就可以完成把参数传递到模板中的操作。结果如下:


"1997-09-02T00:00:00">


0.25


0.25


0.25


  小结

  通过使用上面我介绍的几种技术,我们可以直接从SQL Server 2000数据库中直接取得XML数据。如我所介绍,URL查询、XML模板文件、XDR架构和XPath查询提供了强大的功能,从SQL Server 2000中直接获得XML数据。除此之外,还有很多重要的概念,由于篇幅有限在本文中不可能详述,如FOR XML EXPLICIT查询和OPENXML这些技术,我会在以后的文章中进一步进行讨论,请大家等待。

上一页  [1] [2] [3] 

   
  • 上一篇文章:
  • 下一篇文章:
  • [回到标题] [回到顶部]