用XSLT 2.0生成PHP
http://tech.ddvip.com 2007年10月25日 社区交流
内容摘要:这是由两部分组成的关于 XSLT 的系列文章的第 2 部分,Jack Herrington 将介绍如何扩展第 1 部分中建立的 XSLT 2.0 代码生成器,以便生成代码的 PHP 部分,为 Web 服务器提供数据库访问。
该函数返回完整的数据结构,包括查询和要求的输入。该函数也可在 XSLT 1.0 中实现,但是 XSLT 2.0 中的自定义函数更方便。
php-sql-command 模板使用 SQL 数据结构生成 PHP,参见清单 12。
清单 12. SQL 命令模板
<!-- SQL command template -->
<xsl:template name="php-sql-command">
<xsl:param name="command" />$dbh->doCommand(
"<xsl:value-of select="normalize-space( $command/sql/query )" />"
<xsl:for-each select="$command/sql/inputs/input">,
$<xsl:value-of select="@name" />
</xsl:for-each> );
</xsl:template>
在 $command/sql/query 和 $command/sql/inputs/input 标签中进行 SQL 查询,并在这些标签中将输入转换成代码。
结束语
虽然看起来似乎很小,但是这里有可能建立数百个 PHP 数据库访问类。当然,这两篇文章中所举的仅仅是一个例子,要使用生成器还必须实现 DatabaseTable 基类,并增加删除和更新的方法。为了避免文中的代码过长,这里没有列出这些方法。
这些文章中的内容可以分为两类:技术性的和理论性的。
从技术上来说有两点:首先,XSLT 非常适合用于代码生成,而 XSLT 2.0 进一步简化了这个过程;其次,在生成器中使用多个模型和多个转换层次使应用程序更容易理解、开发和维护。
从理论上来说,可以看到利用代码生成技术可以迅速、准确地生成大量重复性的代码。这有几方面的好处,至少可以把精力集中到编写代码上,而不必再重复性的工作中浪费精神。此外,还可以快速改变代码库,以适应变化的需求。还可以根据需要相对较快地改变技术,因为重要的设计信息是一个抽象模型,没有嵌入到代码中。
几年来,我一直撰写、讲授和宣传代码生成技术。其间和很多工程师交谈过,他们都对项目中使用的代码生成持肯定态度。其中一位甚至对我说,“如果您有一辆美国造的福特车,这辆车的零部件都是通过代码生成根据产品生产需要提供给福特的。”通过代码生成这种富有创建、注重实效的方法,可以大大减少生产时间、提高代码质量,让编程人员专心编写那些感兴趣的代码。
来源:ibm 作者:Jack Herrington 责编:豆豆技术应用