很久以前,我编写了一个样式'normalizer'程序来扫描大量经典ASP页面的ASP / HTML代码(其中大多数是最初从MS-Word文档生成的,所以很自然地它们充斥着超级样式表和大规模的一次性风格)。样式规范化器生成了一组最小的样式表和样式以及一个新的“已消毒”的asp / html文档,以便已清理的文档生成与原始文档完全相同的渲染输出(通过屏幕截图图像比较验证)。
偶尔,我会遇到这样一个程序的需求,并且正在考虑为商业版本编写一个程序。
我的谷歌搜索技能没有完全像这样(HTML:Normalize Perl模块和HTML Tidy项目似乎只是清理标签)。
所以,我的问题是:
例:
带有嵌入式标签的旧html
<html><head>
<title>title</title>
<style type='css/text'>
.cls1 { font-family: arial; font-size: 10px; font-weight: bold; }
</style>
</head>
<body>
<% somefunction() %>
<div class='cls1' style='font-size:10px;'>test div</div>
</body>
</html>
新的HTML
<html><head>
<title>title</title>
<style type='css/text'>
.cls1 { font-family: arial; font-size: 10px; font-weight: bold; }
</style>
</head>
<body>
<% somefunction() %>
<div class='cls1'>test div</div>
</body>
</html>
请注意div上的样式已经消失,因为它与类cls1
是多余的 编辑:删除术语'清理程序',因为我没有专注于XSS攻击或过滤评论中的输入,只是将大量的特殊样式和随机CSS类合并到一组最小的连贯样式表中。答案 0 :(得分:3)
好吧,我不能肯定地说这对所描述的一切都“有效”,但是Tidy不仅仅是清理标签。
请参阅HTML Tidy Configuration Options,尤其是与Microsoft Word相关的内容(如word-2000)
答案 1 :(得分:2)
如果你想知道自己是否做了一份合理的工作,你应该尝试these tests(使用像Tidy这样的东西你可能会发现你没有做出合理的工作)。
一些选项:
任何使用正则表达式并且不解析标记的东西都会在我的脑海中被怀疑(并且实现起来太复杂了)。
答案 2 :(得分:1)
旧问题,但有些人可能仍然觉得这很有用。查看http://necolas.github.com/normalize.css/。它运作良好!
答案 3 :(得分:0)