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

怎样将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.dtcms.com/a/355431.html

相关文章:

  • 【涂鸦T5】1. 环境搭建和demo
  • 量化策略布林带解读
  • Java Spring(1)- Spring基础
  • AI提升SEO关键词效果新策略
  • PostgreSQL【应用 04】加解密扩展 pgcrypto 使用实例(加密、导出、导入、解密流程说明)
  • 信息技术发展
  • Flink Redis广播方案
  • 深度学习④【经典卷积神经网络演进:从LeNet到ResNet(重要意义)的架构革命】
  • Uniapp中自定义导航栏
  • 使用qianjkun uniapp 主应用 集成 vue微应用
  • Android 使用MediaMuxer+MediaCodec编码MP4视频
  • 把 AI 塞进「智能手环」——基于心率变异的零样本压力监测手环
  • sqlserver: count(*)
  • TCP和HTTP的keep-alive的区别
  • 嵌入式第四十天(TCP并发服务端(IO多路复用))
  • 【Python 入门】(1)Python 语言基础(语法特点)
  • OSI模型和TCP/IP模型区别是什么
  • JAVA全栈Redis篇————Redis常用数据类型概述
  • 如何快速copy复制一个网站,或是将网站本地静态化访问
  • 电力电子中的变压器原理、作用、选型与测量指南-超简单解读
  • 雷达传感器和红外传感器的区别
  • MCP tutorials
  • HOOPS Communicator 2025.6.0更新发布:WebViewer UI全面进化,BIM支持再升级
  • C++(Qt)软件调试---vspkg安装crashpad(34)
  • 浅谈 Java 中的 import static 使用方式
  • Docker 是什么?
  • RabbitMQ-高级特性
  • 机器视觉学习-day09-图像矫正
  • 客户预充值系统(一) - 数据库设计与数据插入
  • JVM——八股文