2006-04-28 13:54:48

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/

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

Convenience factory function for Markup writers (based on xsl:output in XSLT)

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.

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.

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

- <attribute '__dict__' of 'MarkupWriter' objects>
- <attribute '__weakref__' of 'MarkupWriter' objects>
None
None
u'http://www.w3.org/2000/xmlns/'
u'http://www.w3.org/XML/1998/namespace'