三、XQJ的使用实例
在本文中我们不准备更深入地讨论XQuery技术。也不会用尝试解决复杂的技术问题。而只是以一个简单的例子来介绍如何使用XQJ来查询数据。现在先让我们来看一看一些表达式,并理解我们将从中得到什么:
/booklist/books/item/title:得到图书列表中所有书的标题。
/booklist/books/item/title[2]:得到图书列表的第二本书。
/booklist/books/item[title="计算机原理"]/author: 得到书名为"计算机原理"的作者
/booklist/books/item/@cat:得到图书列表中所有的种类
/booklist/books/item[2]/*: 获得图书列表中第二项的所有的元素节点
/booklist/books/item/*/@*:获得图书列表中的任何元素中的任何节点
1. Saxon SQL 扩展
我们有很多方法可以进行XML-关系映射。但在这一节中我们介绍一下如何使用Saxon SQL扩展来进行XML-关系映射。使用Saxon SQL 扩展可以增强CPU访问SQL数据库的能力。第一步是在xsl:stylesheet元素的扩展元素前缀属性中定义一个命名空间前缀(如sql),然后将这个前缀映射到net.sf.saxon.sql.SQLElementFactory。下面是7种操作数据库的stylesheet类型:
sql:connect
sql:query
sql:insert
sql:update
sql:delete
sql:column
sql:close
sql:connect元素将一个数据库连接作为一个值返回。这个值的类型是java.sql.Connection。下面是一段实例代码:
一但通过上述的方法获得连接,就可以对数据库进行GRUD操作了。<xsl:param name="driver" select="'oracle.jdbc.driver.OracleDriver'"/>
<xsl:param name="database" select="'jdbc:oracle:thin:@127.0.0.1:1521:orcl'"/>
<xsl:param name="user">user1</xsl:param>
<xsl:param name="password">mypw</xsl:param>
![]()
<xsl:variable name="connection" as="java:java.sql.Connection"
xmlns:java="http://saxon.sf.net/java-type">
<sql:connect driver="{$driver}" database="{$database}"
user="{$user}" password="{$password}"
xsl:extension-element-prefixes="sql"/>
</xsl:variable>
