写管用条件发布平台
操作指南与条件处理用例
从 DITA 结构化编写到多构型条件发布——同一套源文件,通过在元素、Topic、Map 三级挂载条件属性,由 rtcondition 布尔引擎在发布时精准过滤, 为每个产品构型、每一类受众输出对应的交付物。 本指南以 RAV4 车主手册与 UBTECH 产品手册为实操样本,覆盖从业务规则到发布验证的完整链路。
DITA 结构化编写
在 Oxygen XML Author 中以 Topic 为粒度模块化创作。Concept / Task / Reference 三类主题分工明确,内容一次编写、多处引用。
GitLab 版本与复用
分支、标签、合并请求管理手册迭代;conref / keyref 建立复用库, 共享 Topic 同时服务多条产品线。
条件化多格式发布
同一套源文件,按产品、配置、区域、动力等条件过滤, 输出 HTML5 / PDF / DOCX。
| 步骤 | 动作 | 说明 |
|---|---|---|
01 | 条件设计 | 识别内容差异,映射到 DITA 条件属性 |
02 | 条件库导入 | CSV 导入 TC 代码,注册互锁关系 |
03 | 源文件标注 | Topic 内挂载 product / platform / otherprops / rtcondition |
04 | Git 提交 | 分支 + 提交信息规范,Push 到 GitLab |
05 | 条件发布 | 选择表达式 → rtcondition 过滤 → DITA-OT 输出 |
06 | 结果验证 | 对照预期过滤表逐段检查 |
复杂手册制作的真正难点不在写作,而在把业务规则转化为 可执行的条件模型。本章给出四步映射方法,帮助用户独立完成从业务分析到发布设计的全过程。
TC 代码管理
以 TC 代码为唯一标识,集中管理产品、平台、选装、受众、语言五个维度。支持 CSV 批量导入与条件树浏览。
条件关系注册
注册 implies、excludes、depends_on 关系,防止产生无效条件组合。
布尔引擎
原生支持 AND / OR / NOT 及任意嵌套,可在元素级、Topic 级、Map 级挂载。
keydef 变量
集中定义车型名、能耗单位等变量,切换取值即切换全文术语。
过滤结果追溯
每份交付物附带条件过滤记录,配合验证清单逐段检查。
识别差异来源
拆解业务规则为「哪些内容会因什么而不同」。例如:高配 / 低配、混动 / 纯电、中国 / 欧洲、年度改款。
建立条件维度
将差异来源映射到 DITA 标准属性(product / platform / otherprops / audience / xml:lang), 每个维度分配 TC 代码。
注册互锁关系
分析维度间的依赖、排斥、隐含关系,注册到条件互锁表,防止无效组合。
设计发布表达式
针对每个发布目标组合维度生成表达式。单维度用平台构建表达式, 跨维度用 ISH 布尔表达式。
| 维度 | DITA 属性 | 典型取值 | 过滤逻辑 |
|---|---|---|---|
| 产品 / 车型 | product | rav4-2026 / rav4-ev2014 / alpha1pro | 等值(多值 OR) |
| 平台 / 动力 | platform | hev / phev / ev / windows / mac | 等值(多值 OR) |
| 驱动 / 选装 | otherprops | 2wd / awd / digital-key / sunroof | 等值(多值 OR) |
| 市场 / 受众 | audience | us / ca / maintenance / operations | 等值(多值 OR) |
| 语言 | xml:lang | zh-CN / en / fr-CA | 前缀匹配 |
| 复杂组合 | rtcondition | (TC000002=ev) or (TC000002=phev) | 完整布尔 |
| 条件 A | 关系 | 条件 B | 说明 |
|---|---|---|---|
product=rav4-ev2014 |
implies | platform=ev |
2014 款必为纯电 |
product=rav4-2026 |
implies | platform=hev |
2026 款必为混动 |
otherprops=moon-roof |
excludes | otherprops=pano-roof |
两种天窗互斥 |
otherprops=digital-key |
depends_on | product=rav4-2026 |
数字钥匙仅 2026 可选 |
audience=us |
excludes | audience=ca |
单一发布目标区域 |
① 从业务规则中识别条件维度;② 为维度分配 TC 代码并导入条件库; ③ 注册互锁关系防止无效组合;④ 为每个发布目标设计正确的表达式。
| 项目 | 地址 | 说明 |
|---|---|---|
| 核心 Master Repo | ray/bistu-edu | UBTECH 机器人 + 飞行器两条产品线 |
| 本地化翻译 Repo | jeffrey/bistu-edu-l10n | 大模型翻译流程与多语言分支管理 |
| 登录账号 | 用户名 Jeffrey / 密码 vGk7sXj6LNQxWG7 |
|
| Personal Access Token | glpat-i8TJemxAD1PokXoIheEJ6G86MQp1OjcH.01.0w1f6xhdb |
|
rsa-sha2-256/512 算法不兼容问题,
会导致 push / pull 随机失败。请使用 HTTPS + Personal Access Token,不要用 SSH。
用 SSH Clone 报算法错误 → 换成 HTTPS + PAT。
中英文版本号误认为必须同步 → 两者可独立管理,但需注明对应源语言版本号。
- 下载 Oxygen XML Author,安装路径建议
F:\OxygenXMLAuthor28 - 授权:查阅《编辑器授权》文本文件获取授权码
- 打开
Window > Show View > Git Staging,确认 Git 插件已加载
| 类型 | 用途 | 前缀 | 示例 |
|---|---|---|---|
| Concept | 概念说明、背景介绍 | c_ | c_safety_intro.dita |
| Task | 操作步骤、流程指引 | t_ | t_power_on_off.dita |
| Reference | 参数表格、故障排除 | r_ | r_troubleshooting.dita |
| 共享库 | 多产品线复用的 Topic | lib_ | lib_if_towed.dita |
| DITA Map | 手册骨架与层级 | 产品名 + _user_guide | rav4_user_guide.ditamap |
| 校验类型 | 操作 | 目的 |
|---|---|---|
| 单文件校验 | Ctrl+Shift+V | 校验单个 .dita 文件的 DITA 合规性 |
| Map 完整性 | Validate + Check for Completeness | 确认无断链 |
| 本地预览 | 右键 ditamap → Configure Transformation Scenario | 预览 HTML5 输出效果 |
反思翻译
对已有翻译进行反思性审校,识别语义偏差、术语不一致和风格问题。
内容推荐
基于上下文推荐内容片段,帮助快速完成相似结构的 Topic 编写。
术语管理
自动提取和匹配术语库标准译法,确保跨 Topic 术语一致性。
ASD-STE
对照简化技术英语规范检查英文文本的简洁性与可读性。
| 项目 | 信息 |
|---|---|
| 系统地址 | http://58.87.102.99:8080/#/dita-publish |
| 配套手册 | 写管用条件发布系统操作手册(金山文档) |
| 核心模块 | 标签选项代码库 · 产品管理 · DITA 发布 |
在发布系统中配置构建条件,包括目标格式(HTML5 / PDF / DOCX)、
受众条件(audience)、平台条件(platform)、产品条件(product)。
| 选择项 | 说明 |
|---|---|
| Repository | 选择 GitLab 上的目标仓库(如 bistu-edu) |
| Branch | 选择要发布的分支(如 main 或 release/rav4-zh-v1.1) |
| DITA Map | 选择 map 文件(如 maps/RAV4_Master.ditamap) |
点击发布后,系统将自动完成以下动作:
- 从 GitLab 拉取指定分支的最新内容
- 调用 rtcondition 布尔引擎执行条件过滤
- 调用发布引擎完成格式转换
- 生成带版本号的输出包,提供下载链接并保留发布历史
releases/<产品>/v<版本>/{html,pdf,docx}/,
不覆盖历史版本,保留完整可追溯的发布记录。
条件树
所有条件属性及取值集中存储,组织为树形结构:产品线 / 动力平台 / 配置等级 / 市场区域 / 选装包。
逻辑约束
depends_on 选装电动座椅必须配置等级 ≥ 中
excludes 低配与天窗互斥
implies 旗舰版自动包含全部选装包
可视化组合
拖拽条件节点自动生成 rtcondition 布尔表达式,支持 AND / OR / NOT 与嵌套,发布前可预览过滤结果。
含义:2026 混动四驱版全显示;两驱版仅当选装拖车辅助时才显示对应章节。
以丰田 RAV4 车主手册(2026 混动版 / 2014 纯电版)为实操案例。
两车型共享约 60% 的结构化内容,差异收敛到
platform(hev / ev)与 otherprops(2wd / awd)两个维度。
以下三个样本分别展示三层条件挂载方式,每个样本附预期过滤表可直接用于验证。
文件:topics/library/emergency/lib_if_towed.dita
TC000003 定义为 awd,而 DITA 中写作 AWD,
平台将匹配失败。建议统一小写,或在平台设置中启用 case-insensitive 匹配。
文件:topics/library/operation/lib_smart_key_system.dita
| 发布条件 | 是否显示本 Topic |
|---|---|
product=rav4-2026 otherprops=digital-key | 显示 |
product=rav4-2026(未选数字钥匙) | 隐藏 |
product=rav4-ev2014 | 隐藏 |
文件:topics/library/maintenance/lib_front_compartment.dita
| 场景 | 平台构建表达式 | 预期输出 |
|---|---|---|
| RAV4 2026 HEV AWD | (TC000001=rav4-2026) and (TC000002=hev) and (TC000003=awd) |
含 awd 段落、含拖车禁忌四驱段落 |
| RAV4 2026 HEV 2WD | (TC000001=rav4-2026) and (TC000002=hev) and (TC000003=2wd) |
排除 awd 段落,保留通用拖车段落 |
| RAV4 EV 2014 | (TC000001=rav4-ev2014) and (TC000002=ev) |
含充电程序、含 ev 拖车禁忌段落 |
| 电动化平台通用禁忌 | (TC000002=ev) or (TC000002=phev) |
仅显示电动化平台禁四轮着地段落 |
TC000001=rav4-2026 TC000002=hev TC000003=awd 这种写法缺少布尔运算符,
引擎无法判定条件项之间的逻辑关系,表达式求值失败。
每个条件项必须用括号包住,项与项之间用 and / or / not 显式连接,
例如:(TC000001=rav4-2026) and (TC000002=hev) and (TC000003=awd)。
多值取值的 OR 关系写在取值内部(如 platform="hev ev"),不要与条件项之间的运算符混淆。
<prop att="xml:lang" val="zh" action="include"/> 即可匹配 zh-CN。
它是独立的过滤轴,不与产品 / 平台条件在同一布尔式中混写;发布目标只需在 DITAVAL 中声明语言即可。
若平台确需在同一表达式内标注语言,应写成 and (xml:lang=zh-CN),而不是裸列在末尾。
① 读懂 rtcondition 布尔表达式;② 为段落 / Topic 正确挂载条件属性; ③ 按不同构型设计发布表达式;④ 对照预期结果表逐段验证输出。
| 系统 | 地址 | 账号 / 凭据 |
|---|---|---|
| GitLab | 139.198.6.122:8888 | Jeffrey / vGk7sXj6LNQxWG7 |
| GitLab PAT | glpat-i8TJemxAD1PokXoIheEJ6G86MQp1OjcH.01.0w1f6xhdb | |
| 核心 Master Repo | ray/bistu-edu | UBTECH 机器人 + 飞行器 |
| 本地化翻译 Repo | jeffrey/bistu-edu-l10n | 大模型翻译流程 |
| 条件发布系统 | 58.87.102.99:8080 | 同 GitLab 账号 |
| 操作手册 | 写管用条件发布系统操作手册(金山文档) | |
| 属性 | 用途 | 示例 | 过滤逻辑 |
|---|---|---|---|
product | 产品 / 车型 | product="rav4-2026" | 等值 |
platform | 动力 / 平台 | platform="hev ev" | 多值 OR |
otherprops | 选装 / 驱动 | otherprops="awd" | 等值 |
audience | 市场 / 受众 | audience="maintenance" | 等值 |
xml:lang | 语言 | xml:lang="fr-CA" | 前缀匹配 |
rtcondition | 复杂布尔 | (TC1=ev) or (TC1=phev) | 完整布尔 |
| 元素 | 规范 | 示例 |
|---|---|---|
| Concept | c_ + 主题名 | c_safety_intro.dita |
| Task | t_ + 主题名 | t_power_on_off.dita |
| Reference | r_ + 主题名 | r_troubleshooting.dita |
| 共享库 Topic | lib_ + 主题名 | lib_if_towed.dita |
| DITA Map | 产品名 + _user_guide.ditamap | rav4_user_guide.ditamap |
| 分支名 | release/<产品>-<语言>-v<版本> | release/rav4-zh-v1.1 |
| Tag 名 | <产品>-<语言>-v<版本> | rav4-zh-v1.1 |
| 问题 | 解决方案 |
|---|---|
| SSH Clone 失败 | 改用 HTTPS + PAT 认证 |
| Push 时冲突 | 先 Pull 再 Push,养成开工前 Pull 的习惯 |
| DITA 校验报错 | 检查标签闭合、note 位置(须在 section 前)、元素顺序 |
| 发布系统找不到 Map | 确认分支已 Push 到远程,且 ditamap 在仓库根目录或一级子目录 |
| AI 翻译破坏标签 | 使用 Author 模式而非 Text 模式调用 AI |
| 中英文版本号混淆 | 两者独立管理,在 metadata 中注明对应源语言版本号 |
| 条件过滤后内容为空 | 检查表达式语法与大小写,用表达式构建器验证并预览输出 |
| 低配车型显示了高配内容 | 检查条件互锁规则是否遗漏,属性名是否在条件层中声明 |