XSL-FO:如何设置整个文档的初始页码?

时间:2018-04-02 12:56:28

标签: xml xslt xsl-fo

我的xml是root,其中包含许多不同的子元素,每个元素在page-sequence内都有自己的标记。 Xslt模板需要一个参数 - 本文档的初始页面。我无法在initial-page-number的{​​{1}}属性中设置它,因为不知道哪个元素将是第一个。在xsl-fo或xslt级别中是否有任何变通方法可以将给定数字作为第一页序列的页码应用?

xml示例1:

page-sequence

xml示例2:

<root>
 <item-abc/>
 <item-def/>
 <item-ghj/>
</root>

XSLT:

<root>
 <item-ghj/>
 <item-ghj/>
 <item-abc/>
</root>

1 个答案:

答案 0 :(得分:1)

  

因为不知道哪个元素是第一个。

如果是,请更改以下代码

<x:apply-templates select="root/item-abc"/>
<x:apply-templates select="root/item-def"/>
<x:apply-templates select="root/item-ghj"/>

<x:apply-templates select="root/*"/>

并通过position()函数检查哪个是第一个:

<x:template match="root/item-abc">
   <fo:page-sequence master-reference="m" format="00001">
       <x:if test="position() eq 1">
           <x:attribute name="initial-page-number" select="'1'"/>
       </x:if>
   ....
   </fo:page-sequence>
</x:template>

这将满足您的要求。