仅向文档页面添加元数据值
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 的同一个文件。
我需要知道哪个页面是我们 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 的同一个文件。