【发布时间】:2013-12-19 00:22:04
【问题描述】:
我正在使用 web2py gluon html 库生成一些 html(该应用程序是独立的 - 未嵌入 web2py 框架中 - 并且仅使用 gluon.html 帮助程序)
我正在为其添加一些样式。由于我通过电子邮件发送生成的 html,因此我正在使用 premailer 预处理 html。但是 premailer 不接受CDATA 标签:
cssselect.parser.SelectorSyntaxError: Expected selector, got <DELIM '<' at 0>
我查看了胶子代码,但我不明白:
class STYLE(DIV):
tag = 'style'
def xml(self):
(fa, co) = self._xml()
# no escaping of subcomponents
co = '\n'.join([str(component) for component in
self.components])
if co:
# <style [attributes]><!--/*--><![CDATA[/*><!--*/
# style body
# /*]]>*/--></style>
return '<%s%s><!--/*--><![CDATA[/*><!--*/\n%s\n/*]]>*/--></%s>' % (self.tag, fa, co, self.tag)
else:
return DIV.xml(self)
目前我正在做的事情是:
STYLE('body { font: normal 16px/1.6em "Open Sans",Arial,Helvetica,sans-serif; } ... ')
产生:
<style>
<!--/*-->
<![CDATA[/*><!--*/
body {
font: normal 16px/1.6em "Open Sans",Arial,Helvetica,sans-serif;
}
...
如何使用 STYLE 帮助程序来避免使用 CDATA 标记?还是我需要使用 XML 助手手动添加 <style> 分隔符?
作为一个附带问题:为什么要使用 CDATA 标签?据我所见,it is not really needed 代表HTML(脚本和样式标签已经默认为CDATA)。
【问题讨论】:
标签: python css web2py cdata premailer