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

时间:2012-02-14 12:11:29

标签: c# xml xslt xml-serialization

我有一个电子邮件的XSLT模板。我希望能够指定整体模板颜色(在各种表格单元格上设置等),因此我传递给模板的其中一个字段是ReportHexColour 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" />,并且值在最终电子邮件中显示为文本。这个让我有点生气 - 所以任何帮助都非常感激。

1 个答案:

答案 0 :(得分:0)

我真的偶然发现了这一点。这完全是关于我的XSLT模板中的范围。我试图从BuildReportData/ReportColourHex循环内部访问xsl:for-each值。一旦我在循环外声明了一个变量来保存ReportColourHex值,它就能很好地工作。

抱歉浪费时间!