仅向文档页面添加元数据值

Add metadata value only to doc page

我需要知道哪个页面是我们 Solr 索引的 html 输出中的目录页面。我想添加一个元数据条目,将输出标识为目录。我尝试过的一切都在所有页面中都体现了价值。我们正在使用 docbook 4.5,我对 xslt 还很陌生。任何指向正确方向的指示都会有很大帮助。

谢谢!

我认为 DocBook XSL 样式表没有提供任何漂亮的方法来做到这一点,所以这里有一个丑陋的技巧:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:import
    href="/usr/share/xml/docbook/stylesheet/docbook-xsl/html/chunk.xsl"/>
  <xsl:template name="head.content.generator">
    <xsl:param name="node" select="."/>
    <xsl:if test="not(parent::*)">
      <meta name="TOC" content="This is the TOC"/>
    </xsl:if>
    <meta name="generator" content="DocBook {$DistroTitle} V{$VERSION}"/>
  </xsl:template>
</xsl:stylesheet>

您需要将其放入名为 docbook-custom.xsl 的文件中并从您的 XSLT 引擎中调用:

xsltproc docbook-custom.xsl BOOK.xml

docbook-custom.xsl“自定义层”文件中,您需要将 xsl:import 元素的 href 值设置为实际安装 DocBook XSL 样式表的位置。

http://www.sagehill.net/docbookxsl/CustomMethods.html#CustomizationLayer 有一般细节。

当然,除了上面样式表中的 <meta name="TOC" content="This is the TOC"/>,您想将其更改为您想要添加的任何实际 meta 元素。

此自定义层自定义 head.content.generator 模板,使其采用您实际设置为自定义 meta 元素的任何内容,并将其注入到 meta name="generator" 元素之前DocBook 样式表本身输出。

<xsl:if test="not(parent::*)">…</xsl:if> 使样式表仅在第一个输出 HTML “块”中输出您的自定义 meta 元素,默认情况下它被命名为 index.html 并且默认情况下是包含 TOC 的同一个文件。