4Suite™ API Documentation

# ► Module Ft.Xml.MarkupWriter

MarkupWriter provides a very friendly interface for generating XML content

    Copyright 2005 Fourthought, Inc. (USA).
    Detailed license and copyright information: http://4suite.org/COPYRIGHT
    Project home, documentation, distributions: http://4suite.org/

Classes: MarkupWriter |  |  |  | Globals: EMPTY_NAMESPACE, EMPTY_PREFIX, XMLNS_NAMESPACE, XML_NAMESPACE

## Classes

class MarkupWriter(object)
  General-purpose utility class for generating XML (may eventually be expanded to produce more output types)

      Sample usage:

      from Ft.Xml import MarkupWriter
      writer = MarkupWriter(indent=u"yes")
      writer.startDocument()
      writer.startElement(u'xsa')
      writer.startElement(u'vendor')
      #Element with simple text (#PCDATA) content
      writer.simpleElement(u'name', content=u'Centigrade systems')
      #Note writer.text(content) still works
      writer.simpleElement(u'email', content=u"info@centigrade.bogus")
      writer.endElement(u'vendor')
      #Element with an attribute
      writer.startElement(u'product', attributes={u'id': u"100\u00B0"})
      #Note writer.attribute(name, value, namespace=None) still works
      writer.simpleElement(u'name', content=u"100\u00B0 Server")
      #XML fragment
      writer.xmlFragment('<version>1.0</version><last-release>20030401</last-release>')
      #Empty element
      writer.simpleElement(u'changes')
      writer.endElement(u'product')
      writer.endElement(u'xsa')
      writer.endDocument()

      Note on the difference between 4Suite writers and printers
      Writer  - module that exposes a broad public API for building output
                bit by bit
      Printer - module that simply takes a DOM and creates output from it
                as a whole, within one API invokation

  ### Methods

  __getattr__(self, value)
  __init__(self, stream=<open file '<stdout>', mode 'w' at 0x812e068>, **wargs)
    Convenience factory function for Markup writers (based on xsl:output in XSLT)
    Overrides: __init__ from class object
  simpleElement(self, tagName, namespace=None, extraNss=None, attributes=None, content=u'')
    Create a simple tag with optional attributes and content. The complete element, start tag, optional text content, end tag, will all be generated by this one call. Must *not* be matched with an endElement call.

        Note: all "strings" in these parameters must be unicode objects
        tagName - qualified name of the element
        namespace - optional namespace URI
        attributes - optional dictionary mapping name to unicode value
                    the name can either be a unicode QName or a tuple
                    of (QName, namespace URI)
        content   - optional unicode object with the text body of the
                    simple element
        extraNss - optional dictionary (defaults to an empty one) that
                   creates additional namespace declarations that the
                   user wants to place on the specific element. Each key
                   is a ns prefix, and each value a ns name (URI).
                   You do not need to use extraNss if you will be using
                   a similar namespace parameter.  In fact, most people
                   will never need this parameter.

  startElement(self, tagName, namespace=None, extraNss=None, attributes=None)
    Create a start tag with optional attributes. Must eventually be matched with an endElement call

        Note: all "strings" in these parameters must be unicode objects
        tagName - qualified name of the element (must be unicode)
        namespace - optional namespace URI
        attributes - optional dictionary mapping name to unicode value
                    the name can either be a unicode QName or a tuple
                    of (QName, namespace URI)
        extraNss - optional dictionary (defaults to an empty one) that
                   creates additional namespace declarations that the
                   user wants to place on the specific element. Each key
                   is a ns prefix, and each value a ns name (URI).
                   You do not need to use extraNss if you will be using
                   a similar namespace parameter.  In fact, most people
                   will never need this parameter.

  xmlFragment(self, fragment)
    Incorporate a well-formed general entity into the output. fragment of fragment - string (must not be a Unicode object) to be incorporated verbatim into the output, after testing for wellp-formedness

  ### Methods inherited from class object

  __delattr__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __str__

  ### Members

  __dict__ = <attribute '__dict__' of 'MarkupWriter' objects>
  __weakref__ = <attribute '__weakref__' of 'MarkupWriter' objects>

  ### Members inherited from class object

  __class__

## Globals

EMPTY_NAMESPACE = None
EMPTY_PREFIX = None
XMLNS_NAMESPACE = u'http://www.w3.org/2000/xmlns/'
XML_NAMESPACE = u'http://www.w3.org/XML/1998/namespace'