XML (and XHTML) Generation ========================== The elements generator lets you easily create snippets of XML or XHTML: >>> from cybertools.xml.element import elements as e >>> doc = e.html( ... e.head(e.title(u'Page Title')), ... e.body( ... e.div(u'The top bar', class_=u'top'), ... e.div(u'The body stuff', class_=u'body'), ... )) >>> print doc.render() Page Title
The top bar
The body stuff
An XML element thus created may be converted to an ElementTree (the standard implementation in fact uses an lxml.etree structure as its basis): >>> doc.renderTree() 'Page Title
The top bar
The body stuff
' >>> tree = doc.makeTree() >>> tree.findtext('head/title') 'Page Title' >>> xml = ('Page Title' ... '
The top bar
' ... '
The body stuff
') >>> from cybertools.xml.element import fromXML >>> doc = fromXML(xml) >>> print doc.render() Page Title
The top bar
The body stuff
Alternative Notation -------------------- We can also create such a structure by successively adding elements just by accessing an element's attributes: >>> doc = e.html >>> dummy = doc.head.title(u'Page Title') >>> body = doc.body >>> div1 = body.div(u'The top bar', class_=u'top') >>> div2 = body.div(u'The body stuff', class_=u'body') >>> print doc.render() Page Title
The top bar
The body stuff
>>> for text in (u'Welcome', u'home'): ... p = div2.p(text, style='font-size: 80%;') >>> print doc.render() ......

... >>> x = p('Some more text').b('bold text') >>> x = p('and normal again') >>> print p.render() ...home...Some more text ...bold text... ...and normal again