用XSLT 2.0生成PHP

豆豆网   技术应用频道   2007年10月25日  【字号: 收藏本文

关键字: XSLT

内容摘要:这是由两部分组成的关于 XSLT 的系列文章的第 2 部分,Jack Herrington 将介绍如何扩展第 1 部分中建立的 XSLT 2.0 代码生成器,以便生成代码的 PHP 部分,为 Web 服务器提供数据库访问。

  本文示例源代码或素材下载

  在两部分组成的关于 XSLT 的系列文章的第一期中,介绍了 XSLT 2.0 的一些新特性,并说明了如何从抽象数据模型生成代码。为了示范这一过程,我建立了项目,开发一个健壮的代码生成器,为数据库服务器生成 SQL,并为 Web 服务器生成用于访问数据库的 PHP。我使用多层转换通过 XSL 构建 SQL。首先将抽象模型转化成数据库物理模式模型,然后使用该模式模型构建 SQL 代码。

  接下来就要构建代码模型并从这个模型生成 PHP。在结束项目时,您将拥有系统的抽象模型、构建数据库的 SQL 代码和用于每个表的 PHP 包装器。但是在深入讨论 PHP 生成之前,我想首先回顾一下影响 XSL 模板设计及使用的 XSL 和 XSLT 2.0 的新特性。

  对 XSL 模板的增强

  要生成成功的代码则需要对目标语言(这里是 PHP)和代码生成语言(该例中即 XSLT)有充分的了解。第 1 部分的重点放在代码生成的基本原理上。本文对代码生成等式中的 XSL 一端进行了更深入的分析。

  从本质上说,XSLT 是一种模板化的语言。它接受 XML 作为输入,然后使用一组模板将 XML 转化成 XML、HTML 或文本。生成器是相关模板的集合,使用两种模式 —— XML 模式和 Text 模式 —— 将原来输入的 XML 转化成代码。位于抽象模型和代码模板之间的中间模型使用 XML 模式,生成 PHP 和 SQL 的代码模板则使用文本模式。

  这个代码生成系统使用 Saxon XSLT 引擎和一组自定义模板。为了方便起见,这些模板和输入放在同一个目录中。模板输出分别放到 PHP 和 SQL 代码目录中。不需要对 Saxon 作专门的扩展,虽然如果发现基本安装所提供的 XSL 标签或 XPath 函数不敷使用,那么可以用 Java? 扩展模板引擎。

  XSL 模板的入口是与输入 XML 的根节点匹配的 XSL 模板。在 XSL 引擎启动时,它将输入 XML 应用于模板库。如果有与根节点(/)匹配的特殊模板,则首先执行它。下面是生成器中的主模板标签:

来源:ibm    作者:Jack Herrington    责编:豆豆技术应用

正在加载评论...