如何从 TOC 中排除一些条目

How to exclude some entries from TOC

我正在使用 wkhtmltopdf 创建一些需要目录的文档;这是使用 Hx 标签完成的,它可以正常工作(包括修改后的 XSL 文件)。输入 HTML 是由我自己的代码生成的,所以我可以完全控制它。

现在,我需要排除某些特定级别的条目,但不是所有条目,如下例所示

<h1>First</h1>
    <h2>First of first</h2>     <- exclude
    <h2>Second of first</h2>    <- exclude
<h1>Second</h1>
    <h2>First of second</h2>
    <h2>Second of second</h2>

文档说明了如何自定义 XSL;所以我生成了文档的大纲并查看了 XML 文件。

如手册中所述,它包含具有四个属性的元素:标题、页面、link 和 backLink。

<outline xmlns="http://wkhtmltopdf.org/outline">
  <item title="First" page="0" link="__WKANCHOR_0" backLink="__WKANCHOR_1">
    <item title="First of first" page="1" link="__WKANCHOR_2" backLink="__WKANCHOR_3"/>
    <item title="Second of first" page="1" link="__WKANCHOR_4" backLink="__WKANCHOR_5">

... and so on

我想,为了得到想要的结果,可能有两种方法:

  1. 改变大纲的创建方式,或者
  2. 改变大纲的处理方式

我找不到实现第一个选项的方法,大纲文件没有足够的信息在 XSL 文件中使用。

一些注意事项:

...所以任何帮助表示赞赏。谢谢

经过一番努力,这里有一个解决方案。

由于我无法在不进入 wkhtmltopdf 的源文件的情况下更改大纲文件或创建方法,因此我试图找到一种方法,根据唯一可用的属性来区分我想要的 TOC 条目和我不想要的 TOC 条目;我选择了title,因为它最容易控制。

输入 "zero-width non-joiner" : &zwnj;

我将这个特殊字符添加为我不想要的 TOC 条目的第一个元素,然后在 TOC XSL 文件中使用了以下测试。

<xsl:if test="not(starts-with(@title, '&#x200c;'))">

这个简单的技巧似乎可以很好地完成工作。