Templates 模板中的xsl全局变量访问
我使用xsl样式表从xml创建PDF。有大量的模板用于显示各个部分 在许多模板中,我用背景色显示各种标题Templates 模板中的xsl全局变量访问,templates,variables,xslt,Templates,Variables,Xslt,我使用xsl样式表从xml创建PDF。有大量的模板用于显示各个部分 在许多模板中,我用背景色显示各种标题 <fo:block ... background-color="#2D338E" ...>..</fo:block> 。。 现在,我希望颜色取决于某些条件。 因此,现在有两个颜色值-#2D338E和#2D458E(仅作为示例) 我创建了一个变量 <xsl:variable name="color"><!-- I define condition
<fo:block ... background-color="#2D338E" ...>..</fo:block>
。。
现在,我希望颜色取决于某些条件。
因此,现在有两个颜色值-#2D338E和#2D458E(仅作为示例)
我创建了一个变量
<xsl:variable name="color"><!-- I define conditions here -->
</xsl:variable>
我遇到的问题是,为了在所有模板中使用它,我必须在所有模板中定义一个颜色参数,然后将创建的变量作为该参数的值传递。如果不通过参数将变量“color”传递给管道,则无法从模板定义中“查看”变量“color”。
这个问题能解决吗?我可以在某个地方定义该变量一次,然后访问它吗?通过每个模板添加参数太长。由于某些模板可以多次调用,因此传递时间更长。从您的描述中,我不清楚转换中所有实例的颜色是否相同。如果是,可以将其定义为全局变量。但是,如果某些部分中的颜色与其他部分中的颜色不同,这将不起作用
XSLT2.0提供了解决方案,即隧道参数。如果使用
xsl:with param[@tunnel='yes']
设置参数,则间接调用的模板和直接调用的模板都可以访问该参数,从而避免了您描述的在每个模板中声明参数的问题。您在帖子中没有说明您是否正在使用XSLT 2.0,或者是否可以选择使用XSLT 2.0。在样式表的顶层定义变量,在任何模板之外。然后它将在任何模板的范围内。