我的文件模板较少,顶部有一些可变数据。我们正在引进500个新客户端,因此我需要从每个客户端给我的颜色中生成500个新的少量文件。这些颜色将存储在数据库中。我尝试使用xslt模板完成此操作,但所有&继续作为& amp;并打破了更少。这就是我到目前为止所拥有的
//loop through each row of colors
XmlElement elem = doc.GetElementFromRow(row);
var xslTran = new XslTransform();
xslTran.Load(filePathToXslt);
var fileName = String.Format("theme_{0}.less", row["Name"]);
var writer = new XmlTextWriter(mappedPath, Encoding.UTF8);
xslTran.Transform(elem, null, writer);
Less看起来像这样。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/NewDataSet">
//variables
@color_link:#<xsl:value-of select="Table/Color3" />; // secondary1
@color_link_hover:#<xsl:value-of select="Table/Color2" />; // Secondary1 hover
#profileTabs {
.tab {
<![CDATA[&#explore-tab:hover {]]>
.h-type5 {
h1, h2, h3, h4, h5, h6 {
background-color: @color_link;
}
}
}
}
</xsl:template></xsl:stylesheet>
我正在寻找解决方案,或者如果有更好的方法在不使用xslt的情况下执行此操作,请告诉我。 提前谢谢。
答案 0 :(得分:1)
CSS和less不是XML格式,因此XSLT可能不是你正在寻找的机器人最好的工具。我发现Mustache非常适合这样的任务。它确实有一个C#实现。您的输入文件类似于:
@color_link:#{{color3}}; // secondary1
@color_link_hover:#{{color2}} />; // Secondary1 hover
你会提供一个带有双花括号内容的地图作为键。
让我们知道它是怎么回事。