关于此任务
JET 输入模型 通过编写 JET 变换创建的输入模型具有下列特征:
- 模型分层且具有单个根元素
- 模型中的每种元素类型都可能包含具有字符串值的属性
- 元素包含始终指定零或更大值的基数
模型的功能被特意限制,以便在不要求用户对元模型设计深入了解的情况下,能够更容易地快速创建模型至文本变换。
由 JET 变换和调用操作执行模型处理
“JET 编写”编辑器生成用于处理输入模型的代码。此代码位于 main.jet 模板中,它具有下列特征:
- 生成的代码执行模型的深度优先遍历。
- 该代码处理模型两次:第一次迭代计算派生属性表达式。第二次迭代调用创建项目、文件夹和文件的
JET 操作。创建文件的 JET 操作称为 JET 文件操作,它们调用 JET 模板。
- 在处理期间,每个模型元素都被指定给某个 XPath 变量。此变量的名称是在编辑器区域内可视的元素类型的“属性”视图中定义的。缺省情况下,该变量的名称与模型元素的名称相同。因为
XPath 变量在 XPath 表达式中始终以美元符号($)作为前缀,所以可将该变量与元素名称区分开来。
- 在处理元素期间,第一次迭代计算派生属性,第二次迭代运行 JET 操作,然后处理子模型元素。
- 在派生属性计算和 JET 操作调用期间,与当前元素及其所有父元素相关联的 XPath 变量都可用。因此,JET
文件操作调用的任何派生属性计算、JET 操作或 JET 模板都可能通过使用 XPath 变量来引用当前处理的元素或它的任何父元素。
作为示例,请考虑本模块中的模型。下图显示“输入模式和输出操作”窗格的内容。
每次在根元素下面遇到邮件元素时,都会调用操作“创建文件”(letter.html)和相关联的 JET 模板(templates/letter.html.jet)。该操作和模板都对
$mailing 和 $root 这两个 XPath 变量具有访问权。操作参数和文本替换可以使用属于元素类型邮件和根的任何属性。
XPath
表达式和重命名模型元素
JET 编写功能创建的
XPath 表达式始终具有格式 $variable/@attribute。如果重命名了变量名称或元素类型,那么 JET 编写功能会重构此类表达式。但是,此重构不会扩展至
JET 模板。这就是说,在“JET 编写”编辑器中重命名变量或元素类型会使
JET 模板中使用先前变量名称的任何 XPath 表达式无效。