如何为以后的搜索和替换创建“变量”(有点像HTML中的合并字段)

时间:2012-07-17 02:14:09

标签: html variables

我使用了很多(大约20个)FrontPage 2003(不要笑!)调用“站点参数”,它们本质上是变量。我将它们用于产品数量,电话时间等。

我正在升级到Expression Web,它不支持更改或添加这些参数。另外,我想为Breadcrumbs路径创建变量。 (因此产品页面可能包含面包屑:产品>此产品>屏幕截图。 因此,如果我们决定重命名产品,我希望能够轻松地替换它。

我不想做的事情:

  • 在提供页面时替换值。这会减慢一些事情,并强制所有页面都是.aspx等。我想坚持使用简单的HTML。
  • 使用Javascript替换值(原因相同,只有极少数的浏览器没有启用.js)。

我在想:

we have <variable.products_count>20</variable.products_count> 

但是 .....很容易在那里获得另一个标签和文字,如下例所示:

<variable.products_count> we have <strong>20</strong>  </variable.products_count>

现在当我更换时,我正在更换标签和“我们拥有”。

2 个答案:

答案 0 :(得分:3)

  

我不想做的事情:在提供页面时替换值。这会使事情变慢,并强制所有页面都是.aspx等。我想坚持使用简单的HTML。

从技术上讲,你是对的;使用执行页面与静态页面可能会影响性能。但是插入一些动态值的开销是微不足道的,甚至不应该考虑决策过程。

最简单:

HTML

<body>
    <div>Good old HTML</div>
    <div>A dynamic value: <%= SiteParameters.Foo %></div>
</body>

c#(或VB.Net,或任何你喜欢的)

public static class SiteParameters 
{
    // This value could be pulled from a config file, a database, etc.
    public static readonly string Foo = "Hello World";
}

答案 1 :(得分:0)

您的我们有问题的示例可以轻松地重写以解决问题:

<variable.products_count> we have <strong>20</strong>  </variable.products_count>

为:

we have <strong><variable.products_count></variable.products_count></strong>

当然,我认为更容易的方法是稍微超出HTML语法,并选择文档中不太可能出现的变量名称:

we have <strong>@@PRODUCTS_COUNT@@</strong> ...

如果您有其中的几个,可以使用简单的文本替换工具(例如sed(1))一次性替换它们:

sed -e 's/@@PRODUCTS_COUNT@@/20/g'
    -e 's/@@PRODUCTS@@/Products/g'
    -e 's/@@SCREENSHOTS@@/Screen Shots/g' < inputfile > output.html

要自动执行多个文件,您可能需要编写一个小脚本:

s/@@PRODUCTS_COUNT@@/20/g;
s/@@PRODUCTS@@/Products/g;
s/@@SCREENSHOTS@@/Screen Shots/g;

并在所有文件上运行它:

for f in pre/*.html ; do sed -f /path/to/script < "$f" > "${f/pre/post}" ; done

${f/pre/post}pre替换为post;后处理的文件将位于post/目录中。)