本文档描述了 Apache HTTP 服务器文档 xml 源文件的格式以及将它们转换为 html 的技术。
DTD 位于手册的 style 目录 中。一个带有大量注释的格式示例也位于 mod_template.txt 中。(通常,文件扩展名将是 xml
。这里将其更改为使在线查看更简单。)
可以使用各种格式语法,例如
关键字 | 目的 |
---|---|
<example> ... </example> | 将示例格式化为等宽字体 |
<highlight language="config"> ... </highlight> | 一个配置示例,语法高亮。也可以使用 language="perl"、"lua" 或 "C" |
查看转换后的文档的最简单方法是直接在最新版本的 MSIE、Netscape 或 Mozilla 中打开 xml 文件。(MSIE 6 似乎始终如一地工作。但是,基于 Gecko/Mozilla 的浏览器没有包含引用的 DTD,因此它们在处理包含字符实体的文档时会出现问题)。这些浏览器将读取 xsl 文件并自动为您执行转换,以便您可以看到最终输出的样子。这意味着您可以处理文档并检查您的工作,而无需任何特殊的转换设置。
对于最终演示,仍然需要转换为 html 以适应旧版浏览器。虽然任何符合标准的 xslt 引擎都可以,但更改引擎会导致转换后的文件出现大量差异。因此,我们选择了一个基于 Xalan+Xerces Java 和 Ant 的单一推荐转换系统。这些都是 Apache 项目,在 Apache 许可证下分发。
转换的唯一先决条件是 Java 8 或更高版本的 JVM。假设您已经从 SVN 中检出了 httpd/httpd/branches/2.4.x/docs/(或来自另一个分支的等效内容),以下是如何构建的步骤:(如果您需要有关设置 SVN 的说明,请参阅 此页面。)
$ cd docs/manual
$ svn co https://svn.apache.org/repos/asf/httpd/docs-build/trunk build
$ cd build
$./build.sh all
如果您在 win32 下运行,则如果安装了 cygwin,build.sh
脚本将起作用。或者,在 Win32 上,您应该能够运行 build.bat
脚本。
如果您不想从 SVN 获取构建文件,您可以从我们的 分发目录 下载 pkzipped 版本的当前构建工具。
默认目标仅构建英文文档。要构建其他文档,您应该将语言代码(ja、de 等)指定为参数,或使用 all
目标。要查找可用语言,请参阅我们的 翻译页面。
您可以通过键入以下内容来概述所有可能的构建目标
./build.sh -projecthelp
在提交或提交更改之前,您应该检查 XML 是否正确,以及生成的 HTML
./build.sh validate-xml
./build.sh validate-xhtml
在添加新模块时,转换过程会尝试在 mod/allmodules.xml
中生成一个适当的条目,并创建一个相应的元文件(newfilename.xml.meta
)。由于这些任务是用 perl 编写的,因此您需要一个可用的 perl 安装。如果没有,您应该手动执行这些步骤,或者在项目邮件列表中留下便条,以便其他人可以执行这些步骤。
文档的 PDF 版本是通过使用 "latex-en" Ant 目标将 xml 文件转换为 LaTeX 生成的。用于转换的 XSLT 样式文件位于 style/latex/
下。一旦您有了每个 .xml
文件的 .tex
等效文件,您就可以使用 pdflatex
将其转换为 pdf 文件。推荐版本的 pdflatex 可以作为 TeTeX(unix)或 MikTeX(win32)的一部分获得,但任何版本的 TeX 都可以,只要它足够完整且现代。要生成 PDF,您应该处理 sitemap.tex
文件,该文件包含主要的 LaTeX 文档代码,并将包含所有其他文件。然后,输出的 PDF 将被称为 sitemap.pdf
,您可以根据需要对其进行重命名。
关于 XML 到 LaTeX 转换,需要说明一些事项。虽然 HTML 和 LaTeX 有很多相似之处,但两者之间存在足够的差异,使得同时针对两者输出成为一项艰巨的任务。特别是,处理表格的方法非常不同。为了帮助将为 HTML 设计的表格转换为 LaTeX,应在每个表格中添加一个 <columnspec>
部分。在 <columnspec>
中,为表格中的每一列放置一个 <column width=".xx"/>
,其中 xx
是分配给该列的线宽的百分比。这将有助于转换基本表格。更复杂的东西(如跨行或跨列)目前不可转换。
此外,pdflatex
无法在生成的 PDF 中包含 GIF 文件,因此任何图形都必须以 PNG 格式提供。
XSLT 中嵌入了各种其他限制性假设,这些假设适用于当前文档,但在将来可能需要修改。例如,将 HTML 样式链接转换为 LaTeX 跨引用代码仅在主目录和一个子目录级别内有效。此外,<pre>
部分在 LaTeX 中很少有效,因为 verbatim
部分中的转义和格式规则存在差异。
最后,XML/HTML 和 LaTeX 之间的转义规则存在各种差异。某些字符需要在 LaTeX 中使用反斜杠转义,并且所有 XML 实体(&whatever;)必须转换为 LaTeX 等效项。目前,这是通过在 XSLT 中使用一个大型、丑陋的搜索替换来处理的。这在将来可能需要修改,特别是为了处理翻译。使用 perl 脚本和替换表进行预处理可能是一个更好的解决方案。