添加 fo:marker marker-class-name="section.head.marker" 到特定部分

add fo:marker marker-class-name="section.head.marker" to specific sections

我一直在想办法手动或自动将 fo:marker section.head.marker 添加到特定部分。

我正在使用 FOP 将我的 xml 文件转换为 pdf。

我的格式是这样的

Article
    section A1 -
        section A2 -
            section A3
    section B1 -
        section B2 -
            section B3

我可以使用

<xsl:param name="marker.section.level">3</xsl:param>

为所有部分生成 header,但是我不希望为 A3 生成 header,但我确实希望为 B3 生成它。

我曾尝试将 A3 切换为单节,但该级别的单节仍然生成了 header。

我也试过手动添加 fo:marker 这样的:

<section id="B3">
    <fo:marker marker-class-name="section.head.marker">
        B3
    </fo:marker>
    <title id="B3.title">B3</title>
    ...

但在我的 pdf 输出中我得到:

<fo:marker> sensors </fo:marker>

我是否缺少手动将 fo:marker 添加到我的 xml 文件的内容,或者是否有办法防止通过 xsl 在 simplesect 中生成 fo:markers ?

看起来这可能会以与

类似的方式解决
<xsl:template match="processing-instruction('hard-pagebreak')">
    <fo:block break-after='page'/>
</xsl:template>

我没有将 hard-pagebreak 命令添加到 xml,而是添加了一个 header 命令,它获取当前部分标题并创建 fo:header

处理 运行 header 代的 xsl 部分是:

<xsl:param name="marker.section.level">2</xsl:param>
<xsl:template name="header.content">  
    <xsl:param name="position" select="''"/>
    <xsl:param name="sequence" select="''"/>

    <fo:block>
        <!-- position can be left, center, right -->
        <xsl:choose>
            <xsl:when test="$sequence = 'first'">
                <!-- off -->
            </xsl:when>
            <xsl:when test="$position = 'left'">
                <xsl:call-template name="draft.text"/>
            </xsl:when>
            <xsl:when test="$position = 'center'">
                <fo:retrieve-marker 
                      retrieve-class-name="section.head.marker"
                      retrieve-position="first-including-carryover"
                      retrieve-boundary="page-sequence"/>
            </xsl:when>
        </xsl:choose>
    </fo:block>
</xsl:template>

我的 xsl 文件句柄的其余部分:

imports     <xsl:import href="./docbook-xsl/fo/docbook.xsl"/> first
moving TOC to new page
allowing hard page breaks
Adding footer ( title, page# )
verbatim segment properties
    shading/word wrap
formatting revision history
disable hyphenation
disable showing URLs of links
Color links

我能够使用以下 xsl 代码生成手册 section.head.marker:

<xsl:template match="processing-instruction('running-header')">
    <fo:block>
        <fo:marker marker-class-name="section.head.marker">
            <xsl:value-of select="../title"/>
        </fo:marker>
    </fo:block>
</xsl:template>

然后我只包含了 运行 header processing-instruction.

<section id="B3"
     xmlns:fo="http://www.w3.org/1999/XSL/Format"
     >
 <?running-header?>
<title id="B3.title">B3</title>

这使我可以手动添加 section.head.marker 和当前部分标题。