CSS解析器+XHTML生成器,请求建议

5 投票
4 回答
1489 浏览
提问于 2025-04-15 11:13

大家好,我需要开发一个工具,满足以下要求:

  1. 输入:一个包含CSS规则的XHTML文档,这些规则在head部分。
  2. 输出:一个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

试试 premailer

code.dunae.ca/premailer.web

更多信息: campaignmonitor.com

1

在Pypi上有一个叫做premailer的Python包

撰写回答