`

JET2的初步了解

    博客分类:
  • JET
 
阅读更多

 

JET 是指定模板输出工件的语言。实现一些应用程序的模板集合被称为蓝图(blueprint)(用我们的术语)。JET 范例可以用下列等式表示:

参数 + 蓝图 = 所需的工件

 

 

 

1.JET项目结构:

 

jet工程的结构图

 

 

 

sample.xml:

 

1.JET标签:

1)控制标签:

 

main.jet:控制文件,这些文件控制代码生成的执行。main.jet是工程提供的一个类似入口的控制文件。

dump.jet:也是控制文件,由main.jet调用,可以具体看代码。

 

ws:file

该标签属于蓝图的 control 部分,它初始化一个模板。例如:

 

 

<ws:file template="templates/house.java.jet"
path="{$org.eclipse.jet.resource.project.name}/house1.java">

 

将在输入模型上运行 house.java.jet 模板并将结果转储在 $(Project Root)/house1.java 中。{$org.eclipse.jet.resource.project.name} 是一个动态 XPath 表达式,用 org.eclipse.jet.resource.project.name 变量的值替换部分字符串。该变量是由 JET 引擎定义的。

 

 

c:get

该标签将输出 XPath 表达式的结果。例如,Pre<c:get select="/app/@middle" />Post 将输出 PreHelloPost。注意 select 参数将使用 XPath 表达式。要在期望静态字符串的参数中使用 XPath 表达式,可以通过将表达式封装在括号({ 和 })中来调用动态 XPath 表达式。

 

c:iterate

该标签将遍历具有特定名称的节点,为每个节点执行 iterate 的主体。例如:

 

 

<c:iterate select="/app/person" var="currNode" delimiter="," > 
Name = <c:get select="$currNode/@name" />
</c:iterate> 

 

 

将输出 Name = Chris, Name = Nick, Name = Lee, Name = Yasmary。

 

iterate 标签通常也用于控制模板的其实标记。例如,如果要为模型中的每个人创建 Java™ 类,可使用如下代码:

 

 

<c:iterate select="/app/person" var="currPerson">
<ws:file template="templates/PersonClass.java.jet"
path="{$org.eclipse.jet.resource.project.name}/{$currPerson/@name}.java"/>
</c:iterate>

 

这将创建四个 Java 类文件:Chris.java、Nick.java、Lee.java 和 Yasmary.java。注意启动标记 path 属性中的

 

{$currPerson/@name} 字符串。既然 path 参数不需要 XPath 表达式(像 select 参数一样),{...} 字符告知 JET 引擎通过计算 XPath 表达式代替这部分字符串。$currPerson/@name 告诉引擎用 currPerson 节点(是定义在 iterate 标签中的变量)的 name 属性来代替其字符串。

 

此外,在 PersonClass.java.jet 模板中,它可以引用定义在 iterate 标签中的 currPerson 节点变量。例如,假设 PersonClass.java.jet 如下所示:

 

 

class <c:get select="$currPerson/@name" />Person { 
	public String getName() { 
		return "<c:get select="$currPerson/@name" />"; 
	}
	public void shout() {
		System.out.println("Hello!!!"); 
	} 
}

 

 

c:choose 和 c:when

这些标签允许模板根据值有条件地转储文本

 

 

<c:iterate select="/app/person" var="p" >
	<c:choose select="$p/@gender" > 
		<c:when test="'Male'" > Brother </c:when>
		<c:when test="'Female'" > Sister </c:when> 
	</c:choose>
</c:iterate>

 将输出:

 

 

Brother 
Brother 
Brother 
Sister

注意 c:when 标签需要 test 参数,这需要一个 XPath 表达式。既然我们要通过一个常量比较 select 参数,可用单引号 ('') 包含常量。

 

c:set

 

该标签允许模板动态更改输入模型的属性。一个例子是:在一个字符串以多个方式映射输出文本时,像 Chris 可能映射到ChrischrisChrisClassCHRIS_CONSTANT 等。c:set 将其内容设置为指定的属性。下面的例子为每个人存储名为className 的属性并在名字之后简单添加词 Class

 

 

<c:iterate select="/app/person" var="p" >
	<c:set select="$p" name="className" >
	<c:get select="$p/@name" />Class</c:set>
</c:iterate>

 

 这个有点那啥哈,修改模板的内容。

 

setVariable

该标签允许模板声明和使用一个全局变量,使用 XPath 的全部能力来在任何时候操纵该变量。例如,假设要输出在输入模型中提供了多少个 person 节点。可以利用以下代码:

 

 

<c:setVariable select="0" var="i" />
	<c:iterate select="/app/person" var="p" >
		<c:setVariable select="$i+1" var="i" />
	</c:iterate> 
Number of people = <c:get select="$i" />.
 

 

 

输出 Number of people = 4。

可以使用 get 输出变量,如上例所示。

有超过 45 个标签,这使输出文本具有强大的表现力。表现力大多源于存在条件逻辑、动态更改输入模型和控制执行流的标签。

 

 

2.JET相关的扩展点:多半是不怎么用

JET 是可扩展的通过使用 Eclipse 的扩展点机制。以下是 JET 提供的六个扩展点。

org.eclipse.jet.tagLibraries

该扩展点负责定义标记库。JET 已经包含四个标记库(控制、格式、工作空间、Java),如果您要添加自己的标签功能,可从这里入手。

org.eclipse.jet.xpathFunctions

这允许在 JET XPath 执行时启用自定义 XPath 表达式。一个 JET 中这样的例子是:通过扩展该扩展点,在 XPath 表达式中使用 camelcase(参见 JET 源代码中的 CamelCaseFunction)。

org.eclipse.jet.transform

用于声明您的插件在提供 JET 转换。这是更改您使用什么来启动模板(取代 main.jet)的位置。

org.eclipse.jet.modelInspectors

这允许您定义检查器,使得 JET XPath 引擎来将加载的 Java 对象解释为 XPath 节点。检查器是将对象适配为 XPath 信息模型。作为例子,JET 使用一个模型来浏览 Eclipse 工作空间。注意这是临时 API,并可能随时间而发生变化。

org.eclipse.jet.modelLoaders

这允许您定义 JET 转换和从文件系统加载的 JET <c:load> 标签以怎样的方式使用模型。作为示例,JET 提供模型加载器 loader org.eclipse.jet.resource,将加载 Eclipse IResource(文件,文件夹或项目)并允许通过该资源导航 Eclipse 工作空间。

org.eclipse.jet.deployTransforms

这允许您来将一个 JET 转换打包为一个用于简单发行的插件(包)。这可以被 UI 用来查看哪些转换可用。

 

分享到:
评论

相关推荐

    ASP.NET 中数据库操作初步.txt

    ### ASP.NET 中数据库操作初步知识点解析 #### 一、引言 在开发Web应用程序时,与数据库进行交互是一项基本且重要的任务。ASP.NET作为一种广泛使用的Web应用开发框架,提供了多种方式来实现对数据库的操作。本文将...

    Access+2000中文版高级编程

    5.1.1 了解数据库的内部构造 89 5.1.2 DAO初步 90 5.1.3 进入数据库 90 5.1.4 检查数据库 92 5.1.5 检查表的属性 93 5.1.6 检查查询类型 94 5.2 使用DAO创建数据库 95 5.2.1 创建Database对象 96 ...

    Access 2000中文版高级编程(part1)

    5.1.1 了解数据库的内部构造 89 5.1.2 DAO初步 90 5.1.3 进入数据库 90 5.1.4 检查数据库 92 5.1.5 检查表的属性 93 5.1.6 检查查询类型 94 5.2 使用DAO创建数据库 95 5.2.1 创建Database对象 96 5.2.2 复制...

    ASP程序设计实验指导书.doc

    6. **实验学习目标**:让学生掌握ASP中ADO的使用,理解数据库连接原理,学会使用ODBC、数据库驱动和OLE DB进行连接,并且初步了解FTP命令行操作。 实验内容详细阐述了ASP编程中与数据库交互的基础知识,包括建立...

    Visual Basic 中的 ADO、DAO 和 RDO

    要深入了解ADO,可以参考“ADO 2.0初步”。 2. Remote Data Objects (RDO): RDO是为远程数据访问而设计的,特别是在分布式环境中。它允许Visual Basic应用程序处理远离客户端的数据源,提供了一种轻量级的方式去...

    sql数据库注入相关文章资料

    无论是对于开发人员还是安全维护人员来说,都需要了解SQL注入的基本原理、常见表现形式以及如何有效地进行防范。通过本文介绍的案例分析与防范措施,希望可以帮助读者更好地理解和应对SQL注入攻击。

    GRACE-FO_L3_Handbook_JPL.pdf

    GRACE-FO(Gravity Recovery and Climate Experiment Follow-on)是继GRACE任务之后的一个新的地球观测计划,旨在继续监测地球重力场变化,这对了解全球水循环、气候变化、冰川变化以及地球表面质量变化等具有重要...

    《ASP讲座之六》- ASP与数据库(一).doc

    1. 如果对数据库不熟悉,可以通过安装Office中的Microsoft Access来初步了解数据库的基本概念。 2. 安装Microsoft SQL Server 7.0,以便直接使用,无需额外设置。在Windows 9.x系统中应安装DeskTop版本,而旧版本仅...

    毕业设计完整版ASP+ACCESS学生论坛设计与实现(源代码+论文+开题报告).zip

    2. **ACCESS数据库**:ACCESS是微软公司的一款关系型数据库管理系统,使用Jet Engine作为其数据库引擎。在学生论坛的设计中,ACCESS用于存储论坛的各类数据,如用户信息、帖子、回帖等。通过SQL语句,开发者可以对...

    ASP+ACCESS期刊稿件处理系统(源代码+初稿论文+终稿论文+系统说明+答辩PPT).rar

    **ACCESS数据库** 是微软的桌面数据库管理系统,使用Jet引擎作为其核心。在本系统中,ACCESS数据库存储了稿件的相关信息,包括作者信息、稿件标题、审稿状态、审稿人反馈等。通过SQL语句,ASP脚本可以轻松地从数据库...

    毕业设计完整版ASP+ACCESS客户管理信息系统(开题报告+源代码+论文+答辩PPT).zip

    2. **ACCESS数据库**:ACCESS是Microsoft Office套件中的一个关系型数据库管理系统,使用Jet引擎存储和管理数据。在这个客户管理信息系统中,ACCESS用于存储客户信息、订单记录等数据,并通过ODBC(开放数据库连接)...

    计算机毕业设计-ASP+ACCESS基于BS产品销售管理系统(源代码+LW).zip

    2. **ACCESS数据库**:ACCESS是微软的桌面数据库管理系统,它使用Jet引擎存储和处理数据。在产品销售管理系统中,ACCESS用于存储产品信息、销售记录、客户数据等关键业务信息。开发者可能会利用SQL(Structured ...

    golo dor-开源

    在Golo Dor中,3D RPG的基本架构已经预设,包括角色模型、环境构建、交互系统和初步的游戏逻辑。这些都为开发者提供了快速原型设计和游戏迭代的可能性。此外,由于支持多人在线游戏,Golo Dor还包含了网络通信和同步...

    软件工程工资管理系统

    通过对局部应用的选择,逐一设计出分E-R图,并对各个分E-R图进行合并,生成初步E-R图,消除不必要的系统冗余,可以得出以下工资管理系统E-R图。 图3.1 工资管理系统E-R图 4.逻辑结构设计 4.1具体RDBMS数据模型...

    VB初级教程入门,方便初学者

    本教程将帮助初学者了解VB的基础知识,包括语言结构,以及如何与数据库进行交互。 在VB中与数据库的交互是一个重要的主题,特别是在开发应用程序时,数据的存储和检索是核心功能。本教程的第十章重点讲解了VB与...

    航空发动机专业英语词汇大全.doc

    2. Aircraft (飞机):指能在大气层内飞行的交通工具,包括各类固定翼和旋翼飞行器。 3. Power plant (发动机,动力装置):泛指提供动力的设备,此处特指飞机的发动机。 4. Appreciate (理解,意思到):在学习航空...

    学生成绩管理系统VC程序

    ACCESS则是微软的桌面数据库管理系统,它使用Jet数据库引擎,支持结构化查询语言(SQL),并且易于操作,适合小型到中型企业级的数据管理需求。 在学生成绩管理系统中,开发者运用VC++的MFC库来构建用户界面,这...

    个人网站!希望大家 喜欢·

    首先,我们来了解个人网站的基本构成。一个个人网站通常包括以下几个部分:首页、关于我、作品展示、联系方式等。设计时应注重用户体验,简洁明了的布局和清晰的导航能提高用户的浏览体验。 接下来,我们将重点讨论...

    VB人事管理系统设计(论文+源代码+外文翻译+开题报告+答辩PPT).rar

    数据库部分,如果使用的是Access,那么系统可能依赖于Jet引擎来存储和管理数据。Access数据库以其简单易用和良好的兼容性而被广泛应用于小型数据库系统。开发者需要掌握如何创建表、定义字段、设置关系,以及编写SQL...

    面料英语词汇汇总-Fabric-material.docx

    6. **空气变形丝(AIR-JET TEXTURING YARN)**:通过空气喷射使纤维变形,增强其弹性。 7. **超细纤维(MICRO – FIBRIC)**:极细的纤维,提高了面料的柔软度和吸湿性。 8. **全拉伸丝(FDY 〔FULL DRAWN YARN〕)*...

Global site tag (gtag.js) - Google Analytics