【问题标题】:DocBook 5 rendering without abbrev tag没有缩写标签的 DocBook 5 渲染
【发布时间】:2015-03-05 03:40:12
【问题描述】:

我的 DocBook 5 文档包含 glossentry 标签,其中包含 abbrev 标签。 abbrev 标签似乎对呈现的 HTML 没有任何贡献。我是 DocBook 和 XSLT 的新手。我需要从哪里开始寻求改变?我一直在查看文档,除了对这显然是默认行为感到惊讶之外,我不确定在哪里寻找故障排除。

设置:我的 DocBook 文件以 <book xmlns:xl="http://www.w3.org/1999/xlink"> 开头。我仅将xsltproc 指向一个 XSL 文件,其中包含以下内容:

<?xml version='1.0'?>
<xsl:stylesheet  
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:import href="/usr/share/sgml/docbook/xsl-stylesheets/html/docbook.xsl"/>

<xsl:output method="html"
            encoding="UTF-8"
            indent="no"/>
<xsl:param name="html.stylesheet" select="'main.css'"/>
<xsl:param name="generate.toc">
  book      toc,title
</xsl:param>
<xsl:param name="glossentry.show.acronym">yes</xsl:param>

</xsl:stylesheet>

【问题讨论】:

  • 我查看了docbook-xsl-ns-1.78.1\html\glossary.xsl,它确实有一个&lt;xsl:template match="d:glossentry/d:abbrev"&gt; &lt;xsl:apply-templates/&gt; &lt;xsl:if test="following-sibling::d:acronym|following-sibling::d:abbrev"&gt;, &lt;/xsl:if&gt; &lt;/xsl:template&gt; 用于abbrev 元素的模板,基于此,我希望abbrev 元素的内容出现,如果有几个,以逗号分隔内容。您能否向我们展示您的 docbook 输入的最小但完整的示例、您使用的确切 XSLT、您获得的 HTML 以及您想要的 HTML?
  • 进一步看,您似乎可以将参数glossentry.show.acronym 设置为yes,以确保同时显示“此设置控制光泽条目中的首字母缩写词和缩写元素”。
  • @MartinHonnen,谢谢,我会添加该信息(最初没有,因为最近似乎过于详细的问题吓跑了人们)。该参数有效,但有趣的是它的格式与我见过的其他格式不同!起初这让我很震惊。
  • 我从您的评论中了解到该参数已经解决了这个问题,所以我会写一个关于它的答案。

标签: xslt rendering docbook docbook-5


【解决方案1】:

有一个名为glossentry.show.acronym 的参数,您可以将其设置为yes,以确保显示“光泽条目中的acronymabbrev 元素”。您还可以将其设置为 primary 以确保这些元素显示为条目的主要文本。

如果您需要更多自定义,则需要添加自己的模板来覆盖 Docbook 样式表中的模板,即

<xsl:template match="d:glossentry/d:abbrev"> <xsl:apply-templates/> <xsl:if test="following-sibling::d:acronym|following-sibling::d:abbrev">, </xsl:if> </xsl:template>

并将abbrev 元素输出为逗号分隔列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 2015-01-22
    • 2010-11-30
    • 1970-01-01
    相关资源
    最近更新 更多