如何使Resig的微模板符合XHTML?

3 javascript xhtml templates

我一直在试验John Resig的微模板,它很有效.但是,标记不会通过XHTML 1.0 Transitional验证测试.(除其他外,id属性会产生错误.)

用[[,]]替换标签标识符<,>,通过验证.因此,我创建了一个js脚本,在加载时(jQuery文档就绪)将方括号转换回常规标记.这适用于FF,但不适用于IE,Chrome等.

嵌入在CDATA标签中的脚本也会验证.

问题:有没有办法在脚本中插入微模板并仍然通过XHTML验证?我的想法是在页面加载后删除CDATA标签.但可能有更聪明的方法.(注意:我不想通过js注入HTML,因为标记很难维护.)

PS:我查看了其他js模板,但它们要么不符合XHTML,要么太笨重.

TIA有任何提示.

Ian*_*ott 5

你为什么要经历改变使用微模板的所有方法的麻烦,而不是改变微模板本身?以某种方式加载所有内容似乎浪费处理,然后将其全部更改,以便与脚本兼容.

为什么不修改原始脚本以使用[[标签而不是<%最初提供的标签?

这是它识别模板的方式

str
          .replace(/[\r\t\n]/g, " ")
          .split("<%").join("\t")
          .replace(/((^|%>)[^\t]*)'/g, "$1\r")
          .replace(/\t=(.*?)%>/g, "',$1,'")
          .split("\t").join("');")
          .split("%>").join("p.push('")
          .split("\r").join("\\'")
      + "');}return p.join('');");
Run Code Online (Sandbox Code Playgroud)

现在改变<%to [[>%to]]

str
          .replace(/[\r\t\n]/g, " ")
          .split("[[").join("\t")
          .replace(/((^|]])[^\t]*)'/g, "$1\r")
          .replace(/\t=(.*?)]]/g, "',$1,'")
          .split("\t").join("');")
          .split("]]").join("p.push('")
          .split("\r").join("\\'")
      + "');}return p.join('');"); 
Run Code Online (Sandbox Code Playgroud)