The Default Output Renderer

  This document describes the details of the default output renderer.
  There's not a lot to say about this renderer, since it simply
  returns an XML representation of the Twiddler's tree:

  >>> from twiddler import Twiddler
  >>> from twiddler.output.default import Default
  >>> t = Twiddler('<node attribute="value"><child/></node>',
  ...              output=Default)
  >>> print t.render()
  <node attribute="value"><child /></node>
  
  As you can see, the output won't necessarily identically match the
  input, but it will be syntactically the same.

  The default renderer will always return a unicode string:
  
  >>> t = Twiddler('<node>\xc2\x82</node>',output=Default)
  >>> t.render()
  u'<node>\x82</node>'

  If you need an encoded string, then you must do the encoding
  yourself: 
  
  >>> t.render().encode('utf-8')
  '<node>\xc2\x82</node>'

  If a node is a False tag then the value of the tag will be rendered
  but the tag itself won't be:
  
  >>> t  = Twiddler('<node id="tag">contents</node>',output=Default)
  >>> t['tag'].replace(tag=False)
  >>> print t.render()
  contents

  The default parser also knows how to handle comments, doctypes and
  xml declarations:

  >>> t = Twiddler('''<?xml version='1.0' encoding='utf-8'?>
  ... <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  ... <html>
  ...   <head />
  ...   <body><!-- a comment --></body>
  ... </html>''',output=Default)
  >>> print t.render()
  <?xml version='1.0' encoding='utf-8'?>
  <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
  <html>
    <head />
    <body><!-- a comment --></body>
  </html>
