XSL-FO 和 XML:每页页眉中的圣经书名

XSL-FO and XML: Bibel Bookname in Header on every Page

我在使用 XSL-FO 和 XML 时遇到问题。我实际上对这个领域很陌生。但据我所知,我已经爱上它了。

我的问题是这样的,到目前为止我已经尝试了所有方法: 我希望当前的圣经书名出现在每一页的页眉中,直到新的一页开始。

我这里有 XSL 和 XML 代码: https://xsltfiddle.liberty-development.net/nb9PtDi/17

有可能吗?我必须在代码中更改什么?

查看 fo:markerfo:retrieve-marker(参见 https://www.w3.org/TR/xsl11/#fo_marker)。

书名的副本将放在书的第一个 FO 开头的 fo:marker 中,页眉的 fo:static-content 将包含一个 fo:retrieve-marker与您添加的 fo:markermarker-class-name 匹配的 retrieve-class-name

搜索有关 fo:marker 的问题将为您提供一些操作示例。


我在https://xsltfiddle.liberty-development.net/nb9PtDi/21

摆弄过

我在 CAPTION 的模板中添加了一个 fo:marker(为清楚起见省略了一些属性):

<xsl:template match="CAPTION">
  <fo:block page-break-before="always">
    <fo:marker marker-class-name="caption">
      <xsl:apply-templates />
    </fo:marker>
    <xsl:value-of select="."/>
  </fo:block>
</xsl:template>

并将“HEADER”文本替换为 fo:retrieve-marker(为清楚起见省略了一些属性):

<fo:static-content flow-name="kopf">
  <fo:block>
    <fo:retrieve-marker retrieve-class-name="caption" />
  </fo:block>
</fo:static-content>

两者的联系是“caption”的标记class名称。

您似乎不需要它们,但您可以在 fo:retrieve-marker 上设置 retrieve-positionretrieve-boundary 属性来控制发生的情况,例如,有两个 fo:marker 在同一页上。