从较少的模板和数据库变量动态生成多个较少的文件

时间:2014-05-09 13:49:13

标签: c# xslt less

我的文件模板较少,顶部有一些可变数据。我们正在引进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的情况下执行此操作,请告诉我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

CSS和less不是XML格式,因此XSLT可能不是你正在寻找的机器人最好的工具。我发现Mustache非常适合这样的任务。它确实有一个C#实现。您的输入文件类似于:

   @color_link:#{{color3}}; // secondary1
   @color_link_hover:#{{color2}} />; // Secondary1 hover

你会提供一个带有双花括号内容的地图作为键。

让我们知道它是怎么回事。