当前位置: 首页 > ds >正文

怎样将Word转成高质量的DITA

大龙老师,我们公司有很多文档是Word格式的,能否跟我说说怎样将Word格式的文档转换成DITA格式的文档吗?

好的,大家都说数据像黄金一样宝贵,可问题是,现在好多宝贵的数据都被写在Word文档里了。

大家知道Word文件的内容可以被人读取,但很难被计算机读取和利用,相当于信息被锁进了黑盒。要是能把这些数据转成有语义的、可以被计算机读取的结构化数据,那它们就能活起来,被真正循环利用。 

今天我们就来聊聊怎样将Word格式的文档转换成高质量的结构化数据。

很多人期望使用某个软件的“另存为”这一功能就可以将Word转换成XML格式文件。这确实能转换成XML,不过出来的XML和期望的相差很远。根据我们的实践经验,要得到质量满意的结构化数据,需要经过以下6个步骤。

第一步:定义文档类型

要将Word转换成XML,第一步要定义文档类型。目前,业界已经存在一些标准文档类型,比如:DITA、S1000D等。

如果标准的文档类型能满足要求,就尽量选择标准文档类型。因为工具选择多,市面上已经有很多能够编辑、管理、处理DITA的软件供选购,并且成本相对低。

也可以自己定义文档类型,不过这要自建和维护一套相对应的编辑、管理、出版的软件和样式,成本很高。 

一般情况,建议选择DITA作为文档类型。如果还有不能满足的要求,则在DITA基础上利用专有化机制来实现。DITA的专有化机制就是为了在DITA定义的文档类型不能满足要求时,进行扩展的机制。 

第二步:建立映射关系

有了文档类型以后,第二步是建立源文件和目标文件的映射关系。这种映射关系用于转换程序来实现内容转换。

比如:将Heading1转换成topic的title元素,将<w:p>转换成p元素等等。

同时,我们要调整转换程序,使用这些映射关系来进行转换。

第三步:整理现有数据

虽然大多数公司都有风格指南和模板,但是使用Word写文档,很难做到每个人完全按照风格指南来写。

这就需要我们检查和整理要转换的Word文件,把他们整理成风格一致的文档,这样可以提高转换结果的准确性。

也就是确保文字使用正确的Word样式,这一步俗称刷格式。

第四步:运行程序进行内容转换

有了以上三步的准备工作,我们就可以运行转换程序进行转换了。

在转换程序中已经配置好了转换规则,把整理好的word丢进去,出来的就是DITA数据了。

第五步:调整和校对

在Oxygen编辑器这样的工具中,打开转换好的XML,对内容进行校对和调整。主要关注这几方面:

1. 检查XML是否符合文档类型的定义。结构化编辑工具一般都有自动检查的功能,使用这个功能,编辑器就能报出文档中的错误。 

2. 检查文档的结构、标签、属性是否准确。这需要对目标XML有清晰理解的小伙伴来执行。如果不能满足要求,并且是普遍存在的问题,则需要回到第二步:调整映射关系,然后再执行转换程序进行转换。如果只是个别的问题,则手工调整XML内容就可以了。

3. 检查PDF/HTML输出。最终用户关心的是PDF的输出,而不是XML的内容。所以一般我们还需要将DITA输出成PDF,查看输出是否能满足要求。如果发现样式不能实现输出的要求,也需要结合调整数据来完成。 

第六步:丰富内容

MS Word源文件中,只有一般意义的内容,比如:标题1,标题2,段落、列表、表格等。

实际上,内容中有些内容是有语义的,比如这个。表格中的不是一般的文字,而是具有意义的数字,后续会被其他程序读取的。

再比如,下边这段XML中的level属性。Lite代表一般给用户;Professional代表给专家级用户。

这两例子中的数据在转换过程中难以自动转换生成。就需要在转换以后,填入这些语义信息。我们把这个过程叫做丰富内容,英文叫Enrich。

通过丰富内容,我们就得到高质量的XML了。 

总结一下

我们可以通过这6个步骤,将Word文档转换成高质量的DITA数据:

  1. 定义文档类型;

  2. 建立映射关系;

  3. 整理源内容;

  4. 运行程序进行数据转换

  5. 调整和校对

  6. 丰富内容

http://www.xdnf.cn/news/19153.html

相关文章:

  • 构建AI智能体:十六、构建本地化AI应用:基于ModelScope与向量数据库的文本向量化
  • RGW层Op的组织
  • 【大前端】React Native(RN)跨端的原理
  • Day16_【机器学习—模型拟合问题】
  • 【MySQL 为什么默认会给 id 建索引? MySQL 主键索引 = 聚簇索引?】
  • 【实战】连锁商超出口网络割接项目案例分享
  • 从CTFshow-pwn入门-pwn43理解栈溢出到底跳转call还是plt
  • 【Word】用 Python 轻松实现 Word 文档对比并生成可视化 HTML 报告
  • 深入 OpenHarmony 内核:设备待机管理模块的休眠调度与资源节能技术
  • 【SpringBoot 版本升级整合Redis异常解决】Unable to connect to 127.0.0.1:6379
  • 5G核心网的架构和功能详解
  • 浏览器访问 ASP.NET Core wwwroot 目录下静态资源的底层实现
  • 新手向:Python编写简易翻译工具
  • 实时标注+硬件加速 | Bandicam 8.2 屏幕录制软件特色功能
  • 局域网共享访问各种报错全记录:从「能 ping 不能进」到「IP/名称差异」一次说清
  • OpenAI重组受阻:微软“锁链”与生态博弈
  • 从 WPF 到 Avalonia 的迁移系列实战篇3:ResourceDictionary资源与样式的差异与迁移技巧
  • 使用 httpsok 工具全面排查网站安全配置
  • @HAProxy 介绍部署使用
  • Copilot、Cursor、Trae、ChatGPT 的“四件套”场景选择表
  • 5G相对于4G网络的优化对比
  • 卷积神经网络实现mnist手写数字集识别案例
  • 三、计算机网络与分布式系统(上)
  • Linux DNS配置文件resolv.conf简介
  • Centos 8 磁盘扩展xfs文件系统 (LVM)
  • 云计算学习100天-第32天
  • 1-ATSAMV71Q21
  • 大模型后训练——Online-RL实践
  • DistributedLock 实现.Net分布式锁
  • 智能养花谁更优?WebIDE PLOY技术与装置的结合及实践价值 —— 精准养护的赋能路径