1

我有一个 xsl-fo 文档,其中包含多个<page-sequences>. 每隔一个<page-sequences>元素都有属性id="end"。当我用 引用这些 ID 时ref-id="end",我如何知道检索到的是哪个元素?我可以引用具有该 ID 的下一个元素吗?

示例(我的问题可以在评论中再次看到):

<fo:page-sequence id="end">
...........
</fo:page-sequence>

<fo:page-sequence>
...........
  <fo:page-number-citation-last ref-id="end"/>
  <!-- unfortunately, the previous element having id="ref" has been thus referenced -->
  <!-- how could I reference the next element? -->
...........
</fo:page-sequence>

<fo:page-sequence id="end">
...........
</fo:page-sequence>
4

1 回答 1

1

您能否将其写为答案(对我的两个问题),以便我接受?

当然。在 XSL-FO 中引用特定元素的前提条件是您有一种明确识别它的方法。最好的方法是为ID您希望识别的元素使用属性。

ID 必须由任何字母数字字符序列组成,并且_(即,它的值必须是有效的 NCName,请参阅此处的规范)。

您可以手动输入每个 ID,但通常这是使用xsl:generate-id()(这是 XSLT 的功能,而不是 XSL-FO)。generate-id()自动确保 ID 在整个文档中是唯一的。

请注意,generate-id()实际上会为当前模板匹配或在迭代中处理的节点生成一个 ID xsl:for-each

您可以在 XML 中的每个元素上放置一个 ID,因此 XSL-FO 中的任何元素都可以通过 ID 引用某些内容。

于 2014-03-26T19:39:03.040 回答