XTL 求值模型
本简体中文版本仅供阅读辅助。规范的正典是英文原版,如有规范性解释差异以英文为准。
本文档定义 XTL 实现如何读入输入并产出输出。
输入与输出(Inputs and Outputs)
一次 XTL 转换接受:
template.xlsx
data.xlsx
并产出一个或多个 .xlsx 输出文件。
模板工作簿定义输出工作簿的形态、模板表达式、分组规则、指令与配置。源工作簿提供表格数据。
保留工作表(Reserved Sheets)
xl3 定义了四个保留的工作表名。任何名称匹配双下划线包裹模式 __<name>__ 的工作表都保留供引擎使用。作者不得(MUST NOT)创建这种形态的工作表;其余一切都属于模板内容。
| 工作表 | 用途 |
|---|---|
__config__ | 单一配置对象 —— 引擎元数据 + 作者自定义值 |
__inputs__ | 运行时输入声明(集合;见 输入) |
__sources__ | 命名外部数据源声明(集合;见 外部数据源,依 ADR-0012) |
__lists__ | 作者自定义的成员列表(集合;见 列表工作表) |
从单元格表达式引用保留工作表内容时,使用 Excel 结构化引用形式 __sheet__[key] —— 与未来某个 ADR 中用于多源列的形式相同。旧式 _<name> 引用语法在本版本中已淘汰。
模板配置(Template Configuration)
名为 __config__ 的隐藏工作表可以(MAY)提供元数据与作者自定义值。A 列存放键,B 列存放值。
| 键 | 含义 | 示例 |
|---|---|---|
name | 模板显示名 | Order summary |
description | 自由文本 | Monthly order summary |
source_sheet | 源工作表名,或以 * 结尾的前缀模式 | Orders、Data_* |
source_table | 源表选择器。所选范围中的第一行包含列名;下方为数据行。 | 1、A1:D、B5:H200 |
output_file_pattern | 输出文件名模板 | {{ __config__[customer] }}_report.xlsx |
match_pattern | 批量匹配模式 | Orders* |
| 其他任意键 | 作者自定义值 | title = Q2 Sales |
source_table 是唯一的源表选择器。
作者自定义值使用上述系统表之外的任意键。它们通过 {{ __config__[key] }} 从单元格引用。例如 title = Q2 Sales 这一行可通过 {{ __config__[title] }} 引 用。作者不得(MUST NOT)将系统键名重新用作作者自定义值。
依 ADR-0056,无论 key 是系统槽位还是作者自定义槽位,__config__[key] 的读取形式都解析为该单元格的值。{{ __config__[name] }}、{{ __config__[output_file_pattern] }} 等都是合法读取。写入侧的限制(作者不能以系统键名声明一行)保持不变。读取未知键会抛出 xl3/expression/unknown-name。
需要每次运行取值的模板改用 __inputs__ 工作表(见 输入)。
外部数据源(External Data Sources)
模板可以(MAY)通过提供保留工作表 __sources__ 来声明默认源之外的具名数据源。第 1 行是表头;之后每一行声明一个源。
| 列 | 必需 | 含义 |
|---|---|---|
name | 是 | 源名。仅允许字母、数字与下划线。不得(MUST NOT)以 __ 开头,也不得(MUST NOT)为 default(保留给隐式源)。 |
sheet | 是 | 数据工作簿中的源工作表名,或以 * 结尾的前缀模式。 |
table | 否 | 该工作表的源表选择器,默认为 1。语法与 __config__ 中的 source_table 相同。 |
description | 否 | 自由文本备注。 |