避免在样式组件中使用 CDATA 标记



我正在使用web2py gluon html库生成一些html(该应用程序是独立的 - 未嵌入web2py框架中 - 并且仅使用胶子.html助手)

我正在为其添加一些样式。由于我通过电子邮件发送生成的 html,因此我正在使用预邮件程序预处理 html。但是预邮件不接受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%sn/*]]>*/--></%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[/*&gt;&lt;!--*/
body {
     font: normal 16px/1.6em "Open Sans",Arial,Helvetica,sans-serif;
}
...

如何使用STYLE帮助程序来避免CDATA标签?还是我需要使用 XML 助手手动添加<style>分隔符?

作为一个附带问题:为什么要使用CDATA标签?据我所知,HTML并不是真正需要它(默认情况下已经CDATA脚本和样式标签)。

首先,您需要将 CSS 代码放在 XML() 中。如果您不需要 CDATA 标记,则最好只手动编写样式标记(无论如何,STYLE帮助程序都会这样做)。

XML('<style>body { font: normal 16px/1.6em "Open Sans",Arial,Helvetica,sans-serif; }</style>')

最新更新