xsl 模板中的动态背景颜色代码

Dynamic background color codes in xsl template

所以,我卡住了。

我正在尝试从 xml 文件中读取颜色代码。每当我的 xsl 模板即将通过 FOP 0.2 生成 pdf 时,这个 xml 文件都会不同。

所以我的想法是设置一个局部变量并读取 xml 文件的特定部分,将其写入我的变量并将该值设置为我的背景颜色。到目前为止我失败了。有办法实现吗?

这是我目前得到的结果:

<xsl:variable name="color"><xsl:value-of select="HEAD/COLOR"/></xsl:variable>

<fo:block font-weight="bold"  font-family="Arial, sans-serif" font-size="10pt" background-color="#<xsl:value-of select="$color"/>" background-repeat="no-repeat" background-position="center">
    <xsl:call-template name="xxx" />
</fo:block>

当然,解析器告诉我我无法在背景色元素中使用“<”。

:(

你可以在这里使用Attribute Value Templates...

<xsl:variable name="color"><xsl:value-of select="HEAD/COLOR"/></xsl:variable>

<fo:block font-weight="bold"  font-family="Arial, sans-serif" font-size="10pt" 
          background-color="#{$color}" background-repeat="no-repeat" background-position="center">
<xsl:call-template name="xxx" />
</fo:block>

花括号表示要计算的表达式而不是按字面输出。

<fo:block font-weight="bold"  font-family="Arial, sans-serif" font-size="10pt" 
          background-color="#{HEAD/COLOR}" ...

请注意,您实际上不需要在此处使用变量。你也可以这样做....