5. 提供 DocBook 4.1.2 XML 服务

有 3 种方法可以从 Web 服务器提供 DocBook 4.1.2 XML 服务

使用像 Cocoon 这样的应用服务器是最佳选择。

NoteCocoon 实战
 

要查看运行 Tomcat + Cocoon 提供 DocBook 4.1.2 XML 内容的 Web 服务器示例,请访问 http://www.xml-dev.com:8080/cocoon/mount/docbook/

在本节中,我们将了解如何使用 Tomcat + Cocoon 提供 DocBook 4.1.2 XML 内容。

5.1. Tomcat + Cocoon

Tomcat 是 Java Servlet 容器。有关更多信息,请访问 http://jakarta.apache.org/tomcat/index.html

Apache Cocoon 是一个 XML 发布框架。有关更多信息,请访问 http://xml.apache.org/cocoon/index.html

本 HOWTO 不会详细介绍如何设置 Tomcat + Cocoon,因为它已经在文档 http://xml.apache.org/cocoon/installing/index.html 中进行了解释。设置 Tomcat + Cocoon 是一个简单的过程,应该不到五分钟。

一旦你设置并运行了 Cocoon + Tomcat,请按照接下来的章节来提供 DocBook 4.1.2 XML 内容。

Note

一个重要的注意事项: 现场用户在使用 DocBook 样式表和某些版本的 Xalan XML 解析器时遇到了兼容性问题。Xalan 是 Sun JRE 捆绑的解析器,所以那是你默认使用的解析器。

至少,请确保你正在使用 Sun 的最新 JRE(在撰写本文时为 1.4.2)。

还要考虑将 Xalan 解析器升级到最新版本。 在撰写本文时,最新的 Sun JRE 1.4.2 捆绑了 Xalan 2.4.1,而 Xalan 本身已更新至 2.5.1 版本。

要检查当前安装的版本,请输入

 # java org.apache.xalan.xslt.EnvironmentCheck

更多信息,请访问 http://xml.apache.org/xalan-j/faq.html

5.2. 安装 Norman Walsh 的 XSL

在此步骤中,我们将在以下位置安装 Norman Walsh 的 XSL/usr/local/dbtools/目录。

切换到/tmp/downloads目录并解压 docbook-xsl 文件。

# cd /tmp/downloads/
# gzip -d docbook-xsl-1.53.0.tar.gz
# tar -xvf docbook-xsl-1.53.0.tar

要安装 docbook-xsl,请将文件移动到/usr/local/dbtools.

# mv docbook-xsl-1.53.0 /usr/local/dbtool/docbook-xsl

接下来安装 LDP XSL。

5.3. 安装 LDP XSL

解压tldp-xsl-xxxxx.tar.gz并将所有文件复制到/usr/local/dbtools/docbook-xsl/html目录。

# cd /tmp/downloads
# gzip tldp-xsl-xxxxx.tar.gz
# gzip tldp-xsl-xxxxx.tar
# mv tldp-html*.xsl /usr/local/dbtools/docbook-xsl/html

5.4. 设置 sitemap.xmap

$COCOON_HOME 指向 Cocoon Web 应用程序目录。此目录通常是/usr/local/jakarta-tomcat-4.1.9/webapps/cocoon/

创建一个名为docbook的目录,在$COCOON_HOME/mount下。 这就是我们将放置所有 DocBook XML 4.1.2 内容的地方。

# mkdir $COCOON_HOME/mount/docbook

$COCOON_HOME/mount/docbook中创建一个名为 sitemap.xmap 的文件,内容如下

# cd $COCOON_HOME/mount/docbook
# vi sitemap.xmap
<map:sitemap xmlns:map="https://apache.ac.cn/cocoon/sitemap/1.0">

    <!-- use the standard components -->
    <map:components>
        <map:generators default="file"/>
        <map:transformers default="xslt"/>
        <map:readers default="resource"/>
        <map:serializers default="html"/>
        <map:selectors default="browser"/>
        <map:matchers default="wildcard"/>
        <map:transformers default="xslt"/>
    </map:components>
      
    <map:pipelines>
        <map:pipeline>

   <map:match pattern="">
    <map:generate src="samples.xml"/>
    <map:transform src="/usr/local/jakarta-tomcat-4.1.9/webapps/cocoon/mount/editor/stylesheets/simple-page2html.xsl"/>
    <map:serialize/>
   </map:match>

            <!-- respond to *.html requests with 
                 our docs processed by .xsl -->
            <map:match pattern="*.html">
                <map:generate src="{1}.xml"/>
                <map:transform src="/usr/local/dbtools/docbook-xsl/html/tldp-html.xsl"/>
                <map:serialize type="html"/>
            </map:match>
            
            <!-- later, respond to *.pdf requests with 
                 our docs processed by doc2pdf.xsl -->
            <map:match pattern="*.pdf">
                <map:generate src="{1}.xml"/>
                <map:transform src="/usr/local/dbtools/docbook-xsl/fo/docbook.xsl"/>
                <map:serialize type="fo2pdf"/>
            </map:match>

            <map:match pattern="*.xml">
                <map:generate src="{1}.xml"/>
                <map:serialize type="xml"/>
            </map:match>


        </map:pipeline>
    </map:pipelines>
</map:sitemap>

5.5. 从 Web 浏览器访问 DocBook 4.1.2 XML 内容

将 DocBook 4.1.2 XML 文件放置在$COCOON_HOME/mount/docbook/目录。

一个示例文件可从 http://www.xml-dev.com:8080/cocoon/mount/docbook/openjade.xml 获取。

现在你可以使用浏览器通过 http://localhost:8080/cocoon/mount/sample.html (HTML) 或 http://localhost:8080/cocoon/mount/sample.pdf (PDF) 访问该文档。