问题
如何利用 XSL 提供由运行的代码确定的条件格式(例如,表行之间的增加或减少)?
背景
编辑: 这是一个使用 ASP.NET Core 作为审核外部资源运行状况的长期运行服务的主机来运行的 BackgroundService 实现。这可能是 .NET Core 缺乏 .NET Framework 中存在的一些功能的问题,所以我认为值得一提
这个想法的开始是因为我正在寻找一种方法来制作一个简单的 HTML 模板,我的 C# 数据对象可以以一种简单而有效的方式映射到该模板,而无需操作 StringBuilder。怀着这样的希望,我找到了这个 StackOverflow 响应,它说 XSLT 将是一个很好的解决方案,而无需采用完整的 MVC 方法。
这就是一切的开始(为简洁起见,进行了删节):
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="utf-8"/>
<xsl:template match='/Email'>
<html>
<head>
<style>
<xsl:value-of select="Styles"/>
</style>
</head>
<body>
<h1>Total</h1>
<table id="tblTotal" class="clsPositive">
<tr>
<th>Audit Date</th>
<th>Source 1</th>
<th>Source 2</th>
...
</tr>
<xsl:for-each select="Total/ArrayOfElement/AuditElement">
<xsl:sort select="ReportDate" order="descending"/>
<tr>
<td><xsl:value-of select="ReportDate"/></td>
<td><xsl:value-of select="Source1CountFormatted"/> (<xsl:value-of select="Source1GrowthFormatted"/>)</td>
<td><xsl:value-of select="Source2CountFormatted"/> (<xsl:value-of select="Source2GrowthFormatted"/>)</td>
...
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
有了这个,我有了一个想法,根据所表示的数据类型有条件地格式化增长百分比(您可以通过表上的类属性看到它的开头,我用它来确定增加或减少是否为正或消极的)。然而,当我尝试执行此操作时,Visual Studio 告诉我 XSL 格式错误:
<td><xsl:value-of select="Source1CountFormatted"/> (<i class="<xsl:value-of select="Source1GrowthCss"/>"><xsl:value-of select="Source1GrowthFormatted"/> </i>)</td>
汪汪一只猫
相关分类