oracle xsql详解(二)

1. DataBase Modifications with XSQL
1)build-in Actions xsql:dml

dml,(Data Manipulation Language),那就意味着改变数据库记录,xsql:dml元素用来执行dml语句,包括插入,更新,删除,甚至包括创建和删除数据库对象。xsql:dml元素对处理插入数据非常有用,你还可以用他执行pl/sql块。

如:

<? xml version="1.0" ?>
< page   xmlns:xsql ="urn:oracle-xsql"  connection ="xsql_test" >
< dml >
< xsql:dml >
begin
    insert into xsql_employee values(3, 'lin', 'su', 'coder');
    commit;
end;
</ xsql:dml >
</ dml >
< xsql:query >
select * from xsql_employee
</ xsql:query >
</ page >

 

对与简单的数据库操作来说,内置的dml标签 无疑非常方便,但是对于复杂的操作,他则显得力不从心。

因此,我们需要学习更深入的xsql:dml操作。

2).form 参数和格式化的数据结构

我们可以通过xstl来格式化数据:

1.格式化从xsql:query输出的数据。

2.格式化从客户端传过来的参数。

见下图:

3).xsql:insert-request

用于执行插入操作

让我们一步一步来看一个例子:

首先第一步我们需要一个html表单,新建一个html文件,名为signup.html

<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8" >
< title > Insert title here </ title >
</ head >
< body >
< h1 > sign up </ h1 >
< form  action ="signup.xsql"  method ="post" >
< table  border ="0" >
< tr >
< td > Last Name: </ td >< td >< input  type ="text"  name ="lastname"   /></ td >
</ tr >
< tr >
< td > First Name: </ td >< td >< input  type ="text"  name ="firstname"   /></ td >
</ tr >
< tr >
< td > Job: </ td >< td >< input  type ="text"  name ="job"   /></ td >
</ tr >
< tr >
< td  colspan ="2"  align ="center" >< input  type ="submit"  value ="Sign Me Up!" ></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >

好了,html写好了,下一步我们需要创建一个xsql page来插入数据,不过再这之前,我们有必要来了解下这整个过程,正如你所猜测的,http post request 以键值对的形式传送着参数。xsql默认的把他们转换为简单的xml文档。然后你的样式表把请求中的xml文档转换为格式化后修改操作需要的的xml格式。

我们不妨看一下,xsql默认转换成的简单的xml是什么样的。

下面的xsql page将显示默认的xml参数格式。

新建一个xsql page 名为 signup.xsql

<? xml version="1.0" ?>
< xsql:include-request-params   xmlns:xsql ="urn:oracle-xsql" />

打开signup.html输入数据后提交.得到如下页面:


而我们需要把这个xml格式转换为如下:

< ROWSET >
< ROW >
< LASTNAME > lastnameValue </ LASTNAME >
< FIRSTNAME > firstnameValue </ FIRSTNAME >
< JOB > jobValue </ JOB >
</ ROW >
</ ROWSET >

我们通过下面的xslt来进行转换,新建一个xsl文件,名为signup.xsl

<? xml version="1.0" ?>
< xsl:stylesheet  xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"  version ="1.0" >
< xsl:template  match ="/" >
< ROWSET >
< ROW >
< LASTNAME >< xsl:value-of  select ="request/parameters/lastname" /></ LASTNAME >
< FIRSTNAME >< xsl:value-of  select ="request/parameters/firstname" /></ FIRSTNAME >
< JOB >< xsl:value-of  select ="request/parameters/job" /></ JOB >
</ ROW >
</ ROWSET >
</ xsl:template >
</ xsl:stylesheet >

我们可以验证一下是否转换成功,在刚才的signup.xsql中引用xsl文件

如下:

<? xml version="1.0" ?>
<? xml-stylesheet type="text/xsl" href="signup.xsl" ?>
< xsql:include-request-params   xmlns:xsql ="urn:oracle-xsql" />

再次提交表单,看到已经格式化好的页面:


最后我们需要将格式化好的xml插入到数据库中,修改signup.xsql,代码如下:

<? xml version="1.0" ?>
< page  connection ="xsql_test"  xmlns:xsql ="urn:oracle-xsql" >
< xsql:insert-request  table ="xsql_employee"  transform ="signup.xsl" />
</ page >

运行结果如下:


再看数据库,数据已经插入了。

4).xsql:update-request

xsql:update-request xsql:insert-request非常类似,处理过程都是一样的。不同之处在于:更新是基于已经存在的某条记录更新,而插入不需要 。所以xsql在更新的时候需要知道更新哪条记录。在xsql中用xsql:update-requestkey-columns属性来指定。他列出了需要更新的字段。

下面看一个例子:

html页面:useredit.html

<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html >
< head >
< meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8" >
< title > Insert title here </ title >
</ head >
< body >
< h1 > User Info </ h1 >
< form  action ="xsql/user-update.xsql"  method ="post" >
< table  border ="0" >
< tr >
< td > Last Name: </ td >< td >< input  type ="text"  name ="lastname"   /></ td >
</ tr >
< tr >
< td > First Name: </ td >< td >< input  type ="text"  name ="firstname"   /></ td >
</ tr >
< tr >
< td > Job: </ td >< td >< input  type ="text"  name ="job"   /></ td >
</ tr >
< tr >
< td  colspan ="2"  align ="center" >< input  type ="submit"  value ="Update" ></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >

user-update.xsql

<? xml version="1.0" ?>
<? xml-stylesheet type="text/xsl" href="successful.xsl" ?>
< page  connection ="xsql_test"  xmlns:xsql ="urn:oracle-xsql" >
< xsql:update-request  table ="xsql_employee"  key-columns ="LASTNAME"  transform ="signup.xsl" />
</ page >

这里我们加了一个successful.xsl来格式化插入成功后显示的信息。

successful.xsl

<? xml version="1.0" ?>
< xsl:stylesheet  xmlns:xsl ="http://www.w3.org/1999/XSL/Transform"  version ="1.0" >
< xsl:template  match ="/" >
< html >
< h1 > Update successful! </ h1 >
</ html >
</ xsl:template >
</ xsl:stylesheet >

运行结果:


5).xsql:delete-request

delete-requestupdate-request一样,也是指定key-columns来确定要删除的行。这里就不再重复了。

转载于:https://www.cnblogs.com/huc87/archive/2009/07/24/1530248.html

内容简介 XSQL是目前最流行的一种可扩展的结构化查询语言。本书从一个全新的角度全面展示了如何利用XSQL结合SQLOracle Text、Oracle RDBMS、Java、XML和XSLT等技术的强大功能发布动态Web内容。主要内容包括:讲解如何使用XSQL、其他相关技术和Oracle数据库数据构建XML Web应用程序和Web服务;提供有关如何使用定制的行为处理程序、串行器和XSQL API增强XSQL的各种实用技巧;显示如何使用XSLT编写基于数据库数据的脚本;解释如何使用串行器随意生成图像和PDF文档等。 本书适合对OracleSQL、XML和Java有所了解并希望通过XSQL权衡利用多种Web技术进行Web动态内容开发的程序员和开发人员。 XSQL并不是一种令人难以琢磨的技术。利用该技术您可以轻松权衡该如何使用许多健壮、成熟且可用的技术(如SQL、HTML、HTTP、XML、Java和Oracle RDBMS等)。本书全面讨论了XSQL与这些技术之间的相互关联,详细介绍了如何使用XSQL在Web上表示数据库数据,并给出大量的代码示例,展示了如何使用XSQL和XSLT开发完整的应用程序。对XSQL感兴趣的读者可从本书中了解到如何将这些强大的技术结合起来发布动态Web内容。 本书除了介绍XSQL各种激动人心的特性外,还介绍了以下内容: ·通过XSQLOracle Text、TQL、XSLT和Java并运用Oracle数据库中的数据来构建XML Web应用程序和Web服务。 ·使用定制的行为处理程序、串行器和XSQL API增强XSQL的各种实用技巧。 ·使用XSLT编写基于数据库数据的脚本。 ·使用串行器随意生成图像和PDF文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值