Viewing file: HtmlWriter.py (2.43 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
######################################################################## # $Header: /var/local/cvsroot/4Suite/Ft/Xml/Xslt/HtmlWriter.py,v 1.29 2005/02/09 09:14:48 mbrown Exp $ """ HTML writer for XSLT processor output
Copyright 2005 Fourthought, Inc. (USA). Detailed license and copyright information: http://4suite.org/COPYRIGHT Project home, documentation, distributions: http://4suite.org/ """
from Ft.Xml import EMPTY_NAMESPACE from Ft.Xml.Lib import HtmlPrinter, HtmlPrettyPrinter from Ft.Xml.Xslt import XmlWriter
class HtmlWriter(XmlWriter.XmlWriter): """ Takes events such as those generated by an XSLT processor and invokes a serializer to produce HTML. Uses XML syntax for elements in a non-empty namespace. Instructs the serializer to insert a Content-Type 'meta' element in the first 'head' element. """
def _completeLastElementAfterMeta(self): XmlWriter.XmlWriter._completeLastElement(self) return
def _completeLastElement(self): # XmlWriter clears self._elementName before returning if self._elementName and self._elementUri == EMPTY_NAMESPACE: in_head_tag = (self._elementName.lower() == u'head') else: in_head_tag = False
XmlWriter.XmlWriter._completeLastElement(self)
if in_head_tag: # Output the META tag content = u'%s; charset=%s' % (self._outputParams.mediaType, self._outputParams.encoding) attrs = {u'http-equiv' : u'Content-Type', u'content' : content, } self._printer.startElement(None, u'meta', {}, attrs) self._printer.endElement(None, u'meta') self._completeLastElement = self._completeLastElementAfterMeta
return
def startDocument(self): self._outputParams.setDefault('version', '4.0') self._outputParams.setDefault('encoding', 'iso-8859-1') self._outputParams.setDefault('indent', 1) self._outputParams.setDefault('mediaType', 'text/html')
encoding = self._outputParams.encoding.encode('ascii') version = self._outputParams.version.encode('ascii')
if self._outputParams.indent: printer = HtmlPrettyPrinter.HtmlPrettyPrinter else: printer = HtmlPrinter.HtmlPrinter self._printer = printer(self._stream, encoding)
self._printer.startDocument(version) return
|