CSS解析器+XHTML生成器,请求建议
大家好,我需要开发一个工具,满足以下要求:
- 输入:一个包含CSS规则的XHTML文档,这些规则在
head
部分。 - 输出:一个XHTML文档,CSS规则被计算并放在标签属性里。
我想要的行为最好用下面的例子来说明。
示例输入:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<style type="text/css" media="screen">
.a { color: red; }
p { font-size: 12px; }
</style>
</head>
<body>
<p class="a">Lorem Ipsum</p>
<div class="a">
<p>Oh hai</p>
</div>
</body>
</html>
示例输出:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<body>
<p style="color: red; font-size: 12px;">Lorem Ipsum</p>
<div style="color: red;">
<p style="font-size: 12px;">Oh hai</p>
</div>
</body>
</html>
有什么工具或库最适合完成这个任务吗? 我不确定BeautifulSoup和cssutils是否能做到这一点。
使用Python并不是必须的。 任何推荐都会非常感谢。
4 个回答
1
虽然我不知道有什么具体的工具可以做到这一点,但我可以告诉你一个基本的方法:
首先,把文件当作xml文档加载进来。
接着,从这个文档中提取出css类和样式。
然后,对于每一对css类和样式:
根据css类构建一个xpath查询。
对于每一个匹配的节点:
为这个类设置样式属性。
最后,从文档中移除样式节点。
最后,把文档转换成字符串。
3
1
在Pypi上有一个叫做premailer的Python包