XSLT + XPath:id和id-ref属性的用法

时间:2014-03-26 14:29:20

标签: xslt xpath xsl-fo page-numbering idref

我有一个xsl-fo文档有多个<page-sequences>。每秒<page-sequences>个元素都有id="end"个属性。当我使用ref-id="end"引用这些ID时,如何知道检索了哪个元素?我可以引用具有该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>

1 个答案:

答案 0 :(得分:1)

  

请你写一下这个答案(对我的两个问题),以便我能接受吗?

不确定。在XSL-FO中引用特定元素的前提条件是您可以明确地识别它。执行此操作的最佳方法是对要标识的元素使用ID属性。

ID必须包含任何字母数字字符序列和_(即,其值必须是有效的NCName,请参阅the specification here)。

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

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

您可以在XML中的每个元素上放置一个ID,因此可以为XSL-FO中的任何元素引用ID。