Pdf xsl:fo在页面序列中增加一个变量?

Pdf xsl:fo在页面序列中增加一个变量?,pdf,xsl-fo,apache-xml-graphics,Pdf,Xsl Fo,Apache Xml Graphics,我的xsl文件中有几个页面序列。在每个页面序列中调用xsl模板。在每个模板中,我都有一个块,其中包含一个变量,如果执行该块,我需要增加该变量……我尝试使用一个全局变量,但我在这里的许多帖子中发现,我们无法在xsl fo中增加一个全局变量……有人能指导我如何做到这一点吗 我的xsl文件如下所示: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3

我的xsl文件中有几个页面序列。在每个页面序列中调用xsl模板。在每个模板中,我都有一个块,其中包含一个变量,如果执行该块,我需要增加该变量……我尝试使用一个全局变量,但我在这里的许多帖子中发现,我们无法在xsl fo中增加一个全局变量……有人能指导我如何做到这一点吗

我的xsl文件如下所示:

   <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"
        xmlns:pdf="http://xmlgraphics.apache.org/fop/extensions/pdf">

        <xsl:output encoding="UTF-8" indent="yes" method="xml"
            standalone="no" omit-xml-declaration="no" />


        <xsl:template match="analyseData">

        <fo:page-sequence master-reference="simpleA6">
                        <fo:flow flow-name="xsl-region-body" border-collapse="collapse">
                            <xsl:call-template name="template1" />
                        </fo:flow>
        </fo:page-sequence>

        <fo:page-sequence master-reference="simpleA6">
                        <fo:flow flow-name="xsl-region-body" border-collapse="collapse">
                            <xsl:call-template name="template2" />
                        </fo:flow>
        </fo:page-sequence>
        <fo:page-sequence master-reference="simpleA6">
                        <fo:flow flow-name="xsl-region-body" border-collapse="collapse">
                            <xsl:call-template name="template3" />
                        </fo:flow>
        </fo:page-sequence>

        </xsl:template>

嗯,这里的信息非常有限,但我可以猜测

没有什么能阻止您使用XSL和标识转换来修改某些临时结果。 所以你可以做你正在做的事。每当需要输出此计数器时,为什么不写入输出。没有更多,只是一个代表计数器的空标记

然后编写一个identity translate XSL,该XSL按原样输出结果文件,但上的匹配除外。此模板将替换为:

 <fo:inline><xsl:value-of select="count(preceding::counter) + 1"/></fo:inline>

注意:您也可以在此处使用

所以你会这样做:


XML+XSL->XSL FO with counters+XSL identity change counters->XSL FO->format with the formatter

如果您可以为源中需要编号的所有节点找到一个模式,并且编号顺序与源文档中节点的文档顺序一致,那么您可以使用
进行计数。看


如果计数序列与源文档不匹配,或者您找不到模式,那么您可能会返回到后期处理,正如@kevin brown所建议的那样。

您好,谢谢您的回答。我在每个tempatle中创建了一个空标记,并在每个模板中也添加了这个标记。但我总是在输出中得到1。你能用一个例子解释一下吗。我是xsl fo的工程师。谢谢