转换器

在 Asciidoctor 解析完 AsciiDoc 文档后,它会使用一个转换器来生成您选择的输出格式,例如 HTML、DocBook 或 PDF。Asciidoctor 包含了一些 内置转换器。Asciidoctor 项目提供了 额外的转换器,您可以添加它们,这些转换器是单独分发的。您还可以 创建自己的转换器,或者使用第三方发布的转换器。

在使用转换器时,理解转换器和后端之间的区别非常重要。本页将解释这种区别,并提供更多关于转换器如何工作的背景信息。

什么是转换器?

转换器接收 AsciiDoc 并将其转换为另一种格式。更具体地说,它会按照文档顺序处理解析后的 AsciiDoc 文档中的每个节点(即块或内联元素),并返回一个转换后的片段,处理器会将这些片段组合起来创建输出文档。每个转换器都会生成一种特定的输出格式,例如 HTML 或 DocBook XML。

Asciidoctor 提供了几个内置转换器以及一个用于添加额外转换器的机制。

除了从 AsciiDoc 文档生成传统的文章和书籍外,您还可以使用 Asciidoctor 创建基于 HTML 的幻灯片、静态网站和文档站点。在使用这些附加转换器时,您可能需要在文档中包含一些额外的结构规则。然而,这种结构中的任何内容都不会限制您将内容作为普通文档发布。

什么是后端?

每个转换器都通过后端标识符与输出格式相关联。从用户的角度来看,后端代表所需的输出格式。转换器会向后端标识符注册自己,以声明它生成该输出格式。例如,内置 HTML 5 转换器的后端标识符是 html5。因此,从处理器的角度来看,后端是它用来识别要使用哪个转换器的值。

术语 backend 经常与转换器的名称互换使用。例如,当有人谈论 HTML 5 转换器时,您可能会听到“html5 后端”。然而,这些术语之间存在重要区别。

自定义转换器可以引入或收回后端标识符。由于一个转换器有可能收回一个后端标识符,所以我们不能说一个后端普遍等同于一个给定的转换器。相反,后端标识符会告知处理器根据当前已注册的内容选择哪个转换器来处理请求的后端。

用户通过指定 backend 文档属性、-b (--backend) 命令行选项或 backend API 选项(例如 --backend=docbook5)来选择使用哪个转换器来转换文档。html5docbook5 后端可以使用别名 htmldocbook 来引用,分别对应。

总之,转换器是一个软件组件,它负责将解析后的 AsciiDoc 文档转换为可发布的输出格式。后端代表用户将 AsciiDoc 文档转换为给定格式(例如,HTML 5 的 html5)的意图。该后端也用作标识符,告诉处理器使用哪个转换器。多个转换器可以绑定到(即声明拥有)同一个后端,以便为用户提供生成给定输出格式的替代方案。例如,pdf 后端可以由 Asciidoctor PDF 满足,但它也可能被映射到不同的实现。最后一个向后端注册的转换器将获胜。