Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 模板中的xsl全局变量访问_Templates_Variables_Xslt - Fatal编程技术网

Templates 模板中的xsl全局变量访问

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

我使用xsl样式表从xml创建PDF。有大量的模板用于显示各个部分

在许多模板中,我用背景色显示各种标题

<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。

在样式表的顶层定义变量,在任何模板之外。然后它将在任何模板的范围内。