DITA技巧:将DITA或Markdown发布成CHM

news2024/9/22 17:37:49

- 1 -

场景

CHM是英文Compiled HTML Help的缩写,是微软公司专有的联机帮助格式,由HTML页面、索引和其他导航工具的集合组成。这些文件被压缩并部署为二进制格式,扩展名为.CHM,用于编译HTML。CHM格式通常用于软件文档。

虽然CHM格式是老的文档格式,很多Windows程序已经不再将它作为帮助文件的首选,但是有些场景我们依然希望将DITA或者Markdown发布成CHM格式的内容。尤其是为运行在Windows操作系统下的软件提供离线帮助。DITA发布体系支持将DITA内容发布成CHM格式。

本文分析将DITA或Markdown格式的内容发布成CHM格式的方法,并为实现这个目的扫清实际操作遇到的技术障碍。

- 2 -

DITA-OT发布框架

DITA-OT是DITA内容发布的开源发布引擎。它的诞生,是为了将DITA格式的内容发布成多种格式输出。

随着这些年的发展,DITA-OT支持的输入内容包括DITA和Markdown,输出的格式包括PDF、HTML和CHM格式等。见下图(源自DITA-OT官网:www.dita-ot.org): 

1. 输入格式一:DITA Map + Topic

系统支持由XML格式的DITA Map和XML格式的Topic组成的文档,见下例。

Map文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map
  PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
<map xml:lang="zh-CN">
  <title>智能云相册</title>
  <topicref href="./topics/chap1.dita">
    <topicref href="./topics/sect1-1.dita"/>
    <topicref href="./topics/sect1-2.dita"/>
    <topicref href="./topics/sect1-3.dita"/>
    <topicref href="./topics/sect1-4.dita"/>
    <topicref href="./topics/sect1-5.dita"/>
  </topicref>
  <topicref href="./topics/chap2.dita">
    <topicref href="./topics/sect2-1.dita"/>
    <topicref href="./topics/sect2-2.dita"/>
    <topicref href="./topics/sect2-3.dita"/>
  </topicref>
  <topicref href="./topics/chap3.dita">
    <topicref href="./topics/sect3-1.dita"/>
    <topicref href="./topics/sect3-2.dita"/>
    <topicref href="./topics/sect3-3.dita"/>
  </topicref>
</map>

 Topic文件内容:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE topic
  PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
<topic id="general" xml:lang="zh-CN">
  <title>产品概述</title>
  <prolog/>
  <body>
    <p>智能云相册(Cloud Photos)是阿里云为影像类应用提供的一站式解决方案。智能云相册除了提供影像文件存储、管理等基础功能以外,还支持对影像内容进行分类打标、面孔识别等智能分析,并提供基于自然语言理解的智能搜索服务。</p>
    <p>智能云相册服务基于阿里云云计算服务构建,它解决了以往搭建云相册后端服务过程中,需要购买、搭建和运维 ECS 集群,集成其他云计算服务(对象存储、媒体转码等),处理海量用户的高并发请求等一系列繁琐的问题。更重要的是,它提供了对影像内容的智能分析,智能生成相簿和智能搜索等服务,让人工智能技术变得触手可及,极大提高企业和个人用户构建云相册应用程序的效率。</p>
  </body>
</topic>

 发布过程是这样的:

2. 输入格式二:DITA Map + Markdown

同时,系统也支持由XML格式的DITA Map和Markdown格式的Topic组成的文档,见下例。

Map文件内容:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "map.dtd">
<map xml:lang="zh-CN">
    <title>智能云相册</title>
    <topicref navtitle="产品简介">
        <topicref href="./chap1/sect1-1.md" format="mdita"/>
        <topicref href="./chap1/sect1-2.md" format="mdita"/>
        <topicref href="./chap1/sect1-3.md" format="mdita"/>
        <topicref href="./chap1/sect1-4.md" format="mdita"/>
        <topicref href="./chap1/sect1-5.md" format="mdita"/>
    </topicref>
    <topicref navtitle="快速入门">
        <topicref href="./chap2/sect2-1.md" format="mdita"/>
        <topicref href="./chap2/sect2-2.md" format="mdita"/>
        <topicref href="./chap2/sect2-3.md" format="mdita"/>
    </topicref>
    <topicref navtitle="用户指南">
        <topicref href="./chap3/sect3-1.md" format="mdita"/>
        <topicref href="./chap3/sect3-2.md" format="mdita"/>
    </topicref>
</map>

:目前DITA-OT不支持使用Markdown来写DITA Map文件,只支持使用Markdown编写Topic。 

上例中格式mdita表示Markdown格式的DITA Topic。 

Markdown格式的Topic内容:

# 产品概述

智能云相册(Cloud Photos)是阿里云为影像类应用提供的一站式解决方案。智能云相册除了提供影像文件存储、管理等基础功能以外,还支持对影像内容进行分类打标、面孔识别等智能分析,并提供基于自然语言理解的智能搜索服务。

智能云相册服务基于阿里云云计算服务构建,它解决了以往搭建云相册后端服务过程中,需要购买、搭建和运维 ECS 集群,集成其他云计算服务(对象存储、媒体转码等),处理海量用户的高并发请求等一系列繁琐的问题。更重要的是,它提供了对影像内容的智能分析,智能生成相簿和智能搜索等服务,让人工智能技术变得触手可及,极大提高企业和个人用户构建云相册应用程序的效率。

提示:在发布过程中,如果Topic格式是Markdown,系统先将它转换成XML格式的Topic,然后再执行发布。 

发布过程是这样的:

 如果你所在的公司有很多Markdown格式的内容,想将他们组合在一起发布,那么通过这种方式可以将Markdown内容纳入DITA发布体系,获得单一数据源多种格式输出的能力。

- 3 -

实践

因为CHM是微软公司独有的格式,只能在Windows操作系统上运行,所以请在运行Windows操作系统的电脑上运行本实践步骤。 

1. 安装必要软件

如果安装了Oxygen XML Editor编辑器,它已经包含了DITA-OT发布引擎。

如果没有使用Oxygen XML Editor编辑器,那么可以自行到DITA-OT官网(www.dita-ot.org)下载安装程序,并按照文档安装到电脑上。本文使用的是DITA-OT 3.7.4版本。

无论用到上边两种方法的哪一种,都需要额外安装一个软件叫做HTML help workshop。这个软件是微软公司开发的,但大家可能会发现微软公司的官网已经下载不到这个软件了。

幸运的是,有其他人也碰到了此问题,并提供了解决方案。请访问如下网页:

https://learn.microsoft.com/en-us/answers/questions/265752/htmlhelp-workshop-download-for-chm-compiler-instal

点击网页中的下图链接下载安装程序:

 下载后,请运行这个安装程序安装HTML help workshop软件。

2. 使用Oxygen XML Editor发布

在Oxygen XML Editor编辑中打开ditamap文件,然后发布,如下图:

系统会生成xxx.chm文件。双击此文件,打开结果如下图:

3. 使用Windows命令行发布

如果没有Oxygen XML Editor并且安装了DITA-OT,则使用Windows命令行发布。

1) 打开Windows命令行

2)运行以下命令

cd C:\dev\dita\dita\cloudphotox
dita -i cloudphoto.ditamap -f htmlhelp -o out

注:C:\dev\dita\dita\cloudphotox是我ditamap文件所在路径。

第二行命令的意思:

  • -i cloudphoto.ditamap:输入文件是cloudphoto.ditamap

  • -f htmlhelp:输出格式为htmlhelp

  • -o out:输出文件放到out目录下

3)输出结果为out目录下的cloudphoto.chm文件。 

打开以后如下图:

- 4 -

总结

通过本文描述的总结和实践,大家可以使用此方法将DITA和Markdown格式的内容发布成CHM格式的帮助文件。

赶快试试吧!

 

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/739871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

16. 最接近的三数之和(双指针+减去多余步骤)

16. 最接近的三数之和 双指针减去多余步骤测试代码测试结果 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例 1&#xff1a; 输入&…

JSP环境搭建教程(保姆级!!)

简介 Java Server Pages (JSP) 是一种由 Sun Microsystems 开发的用于创建动态网页的技术。它是 Java EE (Java Enterprise Edition) 技术的一部分&#xff0c;允许开发者在 HTML 中嵌入 Java 代码&#xff0c;从而实现动态内容的生成。 JSP 主要由两部分组成&#xff1a;静态…

LiveGBS流媒体平台GB/T28181功能-如何对接海康大华宇视等监控摄像头报警消息报警订阅国标报警信息

LiveGBS流媒体平台GB/T28181功能-如何对接海康大华宇视等监控摄像头报警消息报警订阅国标报警信息 1、报警信息1.1、报警查询1.2、配置开启报警订阅1.2.1、国标设备编辑1.2.2、选择开启报警订阅 1.3、配置摄像头报警1.3.1、配置摄像头报警通道ID1.3.2、配置摄像头开启侦测1.3.3…

红外雨量计(光学雨量传感器)在预防地质灾害中怎样发挥作用

红外雨量计&#xff08;光学雨量传感器&#xff09;在预防地质灾害中怎样发挥作用 红外雨量计是一种利用红外线原理测量雨量的设备。在预防地质灾害中&#xff0c;红外雨量计可以发挥以下作用&#xff1a; 1.准确测量雨水的降雨量。地质灾害往往与雨水的降雨量密切相关&#x…

【Java EE】-JVM

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【JavaEE】 分享: 雨下整夜 我的爱溢出就像雨水 ——《七里香》 主要内容&#xff1a;JDK&#xff0c;JRE&#xff0c;JVM三者之间的联系。JVM内存区域划分&#xff1a;本地方法栈…

物联网技术的智能配电室综合监控系统设计

安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;配电室是电力系统的重要基础设施&#xff0c;可以保障供配电系统的安全稳定运行。但是&#xff0c;配电室数量多、部署分散、管理复杂&#xff0c;人工现场巡检管理方式费时费工、错误率高&#xff0c;如果发生故障隐…

智能工厂-亿发生产型企业信息化ERP管理系统,打造智能制造工业

对于制造业来说&#xff0c;生产就是发展的动力。传统制造工厂在生产管理中存在很多不足和缺点&#xff0c;流程管理混乱&#xff0c;生产状态不稳定。在制造工厂中实施机械生产工厂ERP管理系统可以解决生产管理中低效率问题&#xff0c;使得制造工厂向着更科学化、智能化的方向…

ETHERNET/IP转RS485/RS232网关profinet与Ethernet通讯卡

网络数据传输遇到的协议不同、数据互通麻烦等问题&#xff0c;一直困扰着大家。然而&#xff0c;现在有一种神器——远创智控YC-EIP-RS485/232&#xff0c;它将ETHERNET/IP网络和RS485/RS232总线连接在一起&#xff0c;让数据传输更加便捷高效。 那么&#xff0c;它是如何实现…

Jmeter接口关联(一)【使用json层级方式提取值】与python中使用层级方式提取值 完成接口关联

文章目录 前言一、按照 json 的路径来提取 ​​​​​​​&#xff08;1&#xff09;成功匹配到数据的案例&#xff08;按照层级匹配&#xff09;&#xff08;2&#xff09;失败未匹配到数据的案例&#xff08;没有按照层级匹配&#xff09;json提取器二、使用完整的接口关联&a…

地方废物回收机构管理系统

方废物回收机构管理系统的开发运用java技术&#xff0c;MIS的总体思想&#xff0c;以及MYSQL等技术的支持下共同完成了该系统的开发&#xff0c;实现了地方废物回收机构的信息化&#xff0c;使用户体验到更优秀的地方废物回收机构管理&#xff0c;管理员管理操作将更加方便&…

奔赴猿田地,开垦一亩三分产

点击上方蓝色字体&#xff0c;选择“设为星标” 回复”云原生“获取基础架构实践 大家好&#xff0c;很久没开荒了&#xff0c;最近一直在想着要不要开始分享最近的一些小技术&#xff0c;看到互联网泡沫化日益严重&#xff0c;程序猿下岗失业&#xff0c;bibi皆是。但不管外界…

Linux如何设置固定IP

首先&#xff0c;Linux的默认网关和DNS解析都是一个地址。 IPV4 IP地址是32位2进制 前缀默认是24但是格式还是得写 DNS解析域名&#xff0c;类似Map&#xff0c;根据域名寻找IP DHCP 如果是自动设置IP&#xff0c;就是由他来自行分配&#xff0c;但是手动的话&#xff0c;就需…

软件测试-基础篇

一、接口的认识 什么是接口 电脑&#xff1a;USB&#xff0c;投影机&#xff08;数据传输&#xff09; 软件&#xff1a;API&#xff0c;application program interface.微信提现与充值&#xff0c;支付宝支付&#xff0c;银联支付接口。&#xff08;鉴权码&#xff1a;token…

港联证券|暑期亲子游和避暑游需求旺盛 数据要素产业价值有望加速释放

上周五&#xff0c;A股再度回调&#xff0c;沪指失守3200点&#xff0c;创业板指、科创50指数跌约1%。截至收盘&#xff0c;沪指跌0.28%报3196.61点&#xff0c;深成指跌0.73%报10888.55点&#xff0c;创业板指跌1.05%报2169.21点&#xff0c;科创50指数跌1.02%&#xff1b;两市…

Vue生态及实践 - Nuxt

Nuxt.js Nuxt.js - Vue.js 通用应用框架 | Nuxt.js 中文网 Nuxt.js 中文教程_w3cschool 开源社区仁人志士创建了开箱可用的&#xff1a;Nuxt.js框架&#xff0c;帮助我们更快的实现ssr的同构。 Nuxt.js是一个基于Vue.js的通用应用框架它是对客户端&#xff0c;服务端基础架…

LeetCode 打卡day59--单调栈

一个人的朝圣 — LeetCode打卡第59-60天 知识总结 Leetcode 739. 每日温度题目说明代码说明 Leetcode 496. 下一个更大元素 I题目说明代码说明 Leetcode 84. 柱状图中最大的矩形题目说明代码说明 知识总结 今天做了单调栈的三道题 总结了一个模版套路: 寻找下一个更大的数 f…

Spring IOC - Bean的扫描

Component及其衍生注解&#xff1a;Configuration、Controller、Service、Repository标记的类&#xff0c;被Spring IOC扫描到后&#xff0c;即可被容器管理起来。其原理基本涵盖在AnnotationConfigApplicationContext构造函数体的三行代码里。 public AnnotationConfigApplic…

学校一键式报警器如何使用

学校一键式报警器通常是在紧急情况下使用的&#xff0c;例如火灾、恶性事件等。以下是一般的使用方法&#xff1a;1. 紧急情况发生时&#xff0c;发现危险或有人身安全受到威胁&#xff0c;迅速找到一键式报警器。2. 按下报警器上的按钮&#xff0c;通常是一个明显的红色按钮。…

查看docker运行状态,与查看防火墙运行状态

安装docker这里不细述了&#xff0c;可以通过 docker -version 查看安装的版本&#xff0c;出现成功就表示安装是ok的 查看docker状态是否启动状态&#xff0c;出现running就表示成功 systemctl status docker 如果没有则需要输入启动命令来启动 systemctl start docker 没报错…

前端学习——Web API (Day2)

Dom事件基础 事件监听 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…