正 文

让你的XSLT如虎添翼--浅谈XSLT扩展


www.7dspace.com  更新日期:2006-1-28 16:06:57  七度空间


采用xalan引擎时,流程和saxon差不多,不过它还是使用扩展函数来完成数据连接和查询的功能。

foo_sql_xalan_query.xsl

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="1.0"
                xmlns:sql="org.apache.xalan.lib.sql.XConnection"
                extension-element-prefixes="sql"> 

<xsl:param name="driver" select="'com.informix.jdbc.IfxDriver'"/>
<xsl:param name="database" select=
"'jdbc:informix-sqli://192.168.0.1:5000/testDB:INFORMIXSERVER=pcsnet;user=pcs;password=abc'"/> 

<xsl:variable name="query">
 select <xsl:value-of select="/query/columns"/> from <xsl:value-of select="/query/table"/>
</xsl:variable>

<xsl:template match="/">
   <xsl:variable name="connection"  select="sql:new($driver,$database)"/>
        <HTML>
        <HEAD>
  Table of <xsl:value-of select="/query/table"/>
        </HEAD>
        <BODY>
  <TABLE border="1">
   <xsl:variable name="table" select='sql:query($connection, $query)'/>
   <TR>
           <xsl:for-each select="$table/sql/metadata/column-header">
               <TH><xsl:value-of select="@column-label"/></TH>
             </xsl:for-each>
            </TR>

     <xsl:apply-templates select="$table/sql/row-set"/>

            <xsl:text>
</xsl:text>
         </TABLE>
       </BODY>
     </HTML>
 <xsl:variable name="close" select="sql:close($connection)"/>
</xsl:template>

  <xsl:template match="row-set">
 <xsl:apply-templates select="row"/>
  </xsl:template>

  <xsl:template match="row">
        <TR>
          <xsl:apply-templates select="col"/>
        </TR>
  </xsl:template>

  <xsl:template match="col">
     <TD>
        <xsl:value-of select="text()"/>
     </TD>
  </xsl:template>
</xsl:stylesheet>

saxon和xalan都是通过jdbc连接数据库的,所以读者如果手头没有informix,只要更换不同的数据库驱动,以及对应的数据库连接参数,就可以在自己的机器上检验效果了。

以上的这些案例只是揭开了XSLT扩展的神秘面纱,至于怎么去发掘它的潜力,就留给富有创造力的读者去完成吧。

参考资料

   1. 关于saxon 的相关资料,请参阅Saxonic(http://www.saxonica.com
   2. 关于xalan 的相关资料,请参阅 Apache.org (http://xml.apache.org/xalan-j)
   3. 关于在xalan中增加对于javascript的支持,请参阅Bean Scripting Framework (http://jakarta.apache.org/bsf/index.html) 和 Rhino (http://www.mozilla.org/rhino
   4. 关于XSLT的相关资料,请参阅W3C.org(http://www.w3.org/Style/XSL/)
   5. 程序清单下载:samplecode.rar

关于作者

马晨是上海浦东发展银行温州支行的软件开发专家。自 2000 年来已经在多个平台上开发过不同的应用。目前的工作方向主要侧重于基于 xml 和 javascript 的应用开发。在业余时间喜欢各种运动,尤其喜欢和朋友在周末打打羽毛球。你可以通过电子邮件(pearma@gmail.com)和他联系。

3页,页码:[1] [2] [3] 

上一篇:C# 2.0中泛型编程初级入门教程
下一篇:写Java程序最容易犯的21种错误实例分析
标题:让你的XSLT如虎添翼--浅谈XSLT扩展 作者:马晨 来源:IBM
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐