2013-12-19 103 views
0

我产生一些HTML与web2py gluon html库(应用程序是独立的 - 没有嵌入web2py的框架 - 只有采用gluon.html佣工)避免CDATA标签

我加入一些风格给它。由于我通过电子邮件发送生成的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[/*&gt;&lt;!--*/ 
body { 
    font: normal 16px/1.6em "Open Sans",Arial,Helvetica,sans-serif; 
} 
... 

如何使用STYLE帮手来避免使用CDATA标签?或者我需要使用XML帮手,手动添加<style>分隔符?

作为一个问题:为什么要使用CDATA标签?据我所知,it is not really neededHTML(脚本和样式标签已经默认为CDATA)。

回答

1

首先,您需要将CSS代码放入XML()。如果你不想要CDATA标签,那么你可能更适合手动编写样式标签(这就是所有的STYLE帮手都会这样做的)。

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

谢谢!我最终手动放置了样式标签。我仍然想知道为什么使用CDATA的web2py,因为如我的问题所述,它不是真的需要html(或者我错了吗?) – dangonfast

+0

随意[post and issue](https://code.google.com/ p/web2py/issues/list)。 – Anthony