我的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>
答案 0 :(得分:1)
如果您可以为源中需要编号的所有节点提出一个模式,并且编号顺序按照源文档中节点的文档顺序,则可以使用<xsl:number match="any" count="..." />
进行计数。参见https://www.w3.org/TR/xslt20/#numbering-based-on-position
如果计数顺序与您的原始文档不匹配或找不到模式,那么您可能会返回到后处理,如@ kevin-brown所说。
答案 1 :(得分:0)
嗯,这里的信息非常有限,但我可以猜到。
没有什么可以阻止您使用XSL和身份转换来修改某些临时结果。
这样您就可以做您正在做的事情。每当需要输出此计数器时,为何不写入输出
然后编写一个身份转换XSL,按原样输出结果文件,但
<fo:inline><xsl:value-of select="count(preceding::counter) + 1"/></fo:inline>
注意:您也可以在此处使用
所以您会这样做:
XML + XSL->带有计数器的XSL FO + XSL身份更改计数器-> XSL FO->使用格式化程序格式化