2

我正在使用 docbook maven 插件编写一些文档,并且正在寻找自动在 HTML 输出的标题中制作导航栏。

我有一些这样组织的书:

  • 指南1
  • 指南2
  • 教程
    • 教程1
    • 教程2

期望的结果是使用 XSL 样式表在 HTML 输出中为每本书生成一个导航栏。就像是 :

<xsl:template name="user.header.content">
  <xsl:for-each select="something">
      <xsl:value-of select="somethingelse"/>
  </xsl:for-each>
</xsl:template>

提前致谢 :)。

4

2 回答 2

0

根据我的经验,通过 Web 浏览器提供文档的最佳方式是通过maven-site-plugin.

maven-site-plugin允许您生成站点,然后将其发布到<distributionManagement>POM 部分中指定的 URL。

index.html您可以通过编辑(以类似 wiki 的APT 格式)来编写您的“导航栏” index.apt

+- src/
   +- site/
      +- apt/
      |  +- index.apt

然后生成站点:

+- target/
   +- site/
      +- index.html
      +- resources/
         +- Guide1.html
         +- Guide2.html
         +- tuto1.html
         +- tuto2.html
         +- Guide1.pdf
         +- Guide2.pdf
         +- tuto1.pdf
         +- tuto2.pdf

可以通过Maven 方式实现:

  • 创建一个包含两个子项目(Maven 模块)的项目:即my-prj-docmy-prj-site
  • my-prj-doc通过 构建 DocBook 文档docbkx-maven-plugin。该项目的主要工件应该是my-prj-doc-1.0.0.jar将安装在本地 Maven 存储库(.m2目录)中的
  • my-prj-site生成网站maven-site-plugin;此外,maven-dependency-plugin(最终附加到site阶段)从本地 Maven 存储库获取my-prj-doc-1.0.0.jar并将其解压缩到target/site/resources/目录中

我的经验证明,这种方式是最好的方式之一,因为它提供:

  • 解耦- 阅读文档和浏览文档是独立的概念,您可以将其反映在不同的项目和流程中
  • 可维护性——在单独的项目上工作不太容易出错
  • 模块化- 简而言之:如果您开始将文档视为代码,您可以将文档打包和分发为 API;即您可以编写一个FAQ Maven 子项目,然后您可以在您的和Maven 子项目中导入faq-1.0.0.jar工件,因此维护一个FAQ 子项目您将在两个(或更多)不同的最终文档中拥有相同的FAQ。Guide1Guide2
于 2013-03-29T08:12:20.403 回答
0

使用标准 XSLT 函数document()

示例

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xsl:output method="text"/>

 <xsl:template match="/">
  <xsl:value-of select=
  "document('http://www.w3.org/2007/schema-for-xslt20.xsd')
     /*/xs:annotation[1]/xs:documentation
  "/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于任何 XML 文档(未使用)时,它会访问指定 URL 处的 XML 文档(这是 XSLT 2.0 语言的 XSD)并输出xs:annotation/xs:documentation此远程 XML 文档的第一个元素的字符串值:

This is a schema for XSLT 2.0 stylesheets.

It defines all the elements that appear in the XSLT namespace; it also
provides hooks that allow the inclusion of user-defined literal result elements,
extension instructions, and top-level data elements.

The schema is derived (with kind permission) from a schema for XSLT 1.0 stylesheets
produced by Asir S Vedamuthu of WebMethods Inc.

This schema is available for use under the conditions of the W3C Software License
published at http://www.w3.org/Consortium/Legal/copyright-software-19980720

The schema is organized as follows:

PART A: definitions of complex types and model groups used as the basis 
        for element definitions
PART B: definitions of individual XSLT elements
PART C: definitions for literal result elements
PART D: definitions of simple types used in attribute definitions

This schema does not attempt to define all the constraints that apply to a valid
XSLT 2.0 stylesheet module. It is the intention that all valid stylesheet modules 
should conform to this schema; however, the schema is non-normative and in the event 
of any conflict, the text of the Recommendation takes precedence.

This schema does not implement the special rules that apply when a stylesheet
has sections that use forwards-compatible-mode. In this mode, setting version="3.0"
allows elements from the XSLT namespace to be used that are not defined in XSLT 2.0.

Simplified stylesheets (those with a literal result element as the outermost element)
will validate against this schema only if validation starts in lax mode.

This version is dated 2007-03-16
Authors: Michael H Kay, Saxonica Limited
         Jeni Tennison, Jeni Tennison Consulting Ltd.

2007-03-15: added xsl:document element
            revised xsl:sequence element
            see http://www.w3.org/Bugs/Public/show_bug.cgi?id=4237         

请注意

如果要访问的 XML 文档位于本地文件中,请使用“file:”模式,如下所示:

'file:///c:/temp/myXmlDocument.xml'

于 2013-03-28T14:32:46.277 回答