XSLT模板使用XML值作为表行';bgcolor';

本文关键字:bgcolor XML XSLT | 更新日期: 2023-09-27 18:24:21

我有一个用于电子邮件的XSLT模板。我希望能够指定整个模板的颜色(在各种表格单元格等上设置),所以我传递给模板的字段之一是ReportHexColor C#属性——一个十六进制颜色字符串(例如#4F81BD)。

public string ReportColourHex { get; set; }

无论我做什么,这个值都不会放在模板中元素的bgcolor属性中(或者放在td style="background-color:..."属性中)。

在搜索互联网后,我尝试过:

 <td bgcolor="{BuildReportData/ReportColourHex}" style="font-weight: bold">

以及:

<td style="font-weight: bold>
    <xsl:attribute name="bgcolor">
        <xsl:value-of select="BuildReportData/ReportColourHex" />
    </xsl:attribute>
    ... other text here etc.
</td>

这两种想法都无济于事。为行背景生成的HTML总是白色的(但如果我检查电子邮件的来源,bgcolor实际上没有值,即它看起来像这样:<td bgcolor=""

第一个想法显然是数据不存在。但是,我可以在模板中的其他任何位置渲染<xsl:value-of select="BuildReportData/ReportColourHex" />,并且该值在最终电子邮件中以文本形式正确显示。这件事让我有点抓狂,所以我们非常感谢您的帮助。

XSLT模板使用XML值作为表行';bgcolor';

我刚刚偶然发现了这个。这一切都与XSLT模板中的作用域有关。我试图从xsl:for-each循环中访问BuildReportData/ReportColourHex值。一旦我在循环外声明了一个变量来保存ReportColourHex值,它就完美地工作了。

很抱歉浪费时间!