xsl fo internal link 不能跨不同的页面序列工作

xsl fo internal link does mot work across different page sequences

我得到了多个页面序列,这是必要的,因为显示的数据具有不同的参数(一些横向和一些纵向)。我努力用 links:

构建目录
<fo:page-sequence id="toc">
<fo:page-sequence id="data1">
<fo:page-sequence id="data2">

<xsl:template name="toc">
  <fo:flow>
   <fo:block>
        <fo:basic-link internal-destination="data1">
          data 1
          <fo:leader leader-pattern="dots"/>
          <fo:page-number-citation ref-id="data1"/>
        </fo:basic-link>
      </fo:block>
   </fo:flow>
</xsl:template>

我收到以下警告:

1 link target could not be fully resolved and now point to the top of the page or is dysfunctional

因此内部目标无法解析 ID,它总是 link 到文档的开头,但我希望它 link 到 data1 页面序列第一页的顶部.

如果我为内部目标放置了一个在文档中无处可寻的 ID,则 link 完全损坏,我会收到预期的错误。为 data1 序列显示的页码是正确的。是不是不能只link到某个页面?这样就可以规避问题了。

我必须使用 XSL 2.0 和 Xalan。

更新: 现在问题变得很奇怪。我在 "region-after" 中有这样的页脚:

<fo:static-content flow-name="xsl-region-after">
  <fo:block>
    <fo:inline>
      <fo:page-number/>
      /
      <fo:page-number-citation-last ref-id="data5"/>
    </fo:inline>
  </fo:block>
</fo:static-content>

data5 是最后一页序列。如果我输入 data4,则 link 到 data5 有效,但对其他人无效。如果我把它完全拿出来,所有 link 的工作!所以这个 <fo:page-number-citation-last ref-id="data5"/> 获取最后页码放到页脚中其实就是问题所在。这是为什么?我还能如何获得最后页码?

在页脚中调用 page-number-citation-last 似乎阻止了 links!

您可以尝试使用生成 fo:page-sequence 内第一个区域的元素的 ID。如果它没有 ID,则使用 generate-id() 给它一个(参见 https://www.w3.org/TR/xslt20/#function-generate-id)。