Ejemplo n.º 1
0
    def test_1(self):
        dtd = ('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" '
               '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" '
               '[\n'
               '<!ENTITY entity_test "TEST">\n'
               ']>')
        data = '<?xml version="1.0"?>\n'+dtd

        parser = XMLParser(data)

        name, doctype = list(parser)[2][1]
        self.assertEqual(get_doctype(name, doctype), dtd)
Ejemplo n.º 2
0
def get_start_tag(value):
    tag_uri, tag_name, attributes = value
    qname = get_qname(tag_uri, tag_name)
    s = '<%s' % qname
    # Output the attributes
    for attr_uri, attr_name in attributes:
        value = attributes[(attr_uri, attr_name)]
        qname = get_attribute_qname(attr_uri, attr_name)
        value = XMLAttribute.encode(value)
        s += ' %s="%s"' % (qname, value)
    return s + '>'


stream_to_html_map = (
    lambda x: '',                      # XML_DECL
    lambda x: get_doctype(x[0], x[1]), # DOCUMENT_TYPE
    get_start_tag,                     # START_ELEMENT
    lambda x: get_end_tag(x[0], x[1]), # END_ELEMENT
    XMLContent.encode,                 # TEXT
    lambda x: '<!--%s-->' % x,         # COMMENT
    lambda x: '',                      # PI
    lambda x: x)                       # CDATA


def stream_to_html(stream, encoding='UTF-8', map=stream_to_html_map):
    return stream_to_str(stream, encoding=encoding, map=map)


def set_content_type(stream, content_type):
    key1 = (None, 'http-equiv')
    key2 = (None, 'content')