2013-12-19 116 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