XmlWrite

Writes XML and XHTML.

class cpip.util.XmlWrite.Element(theXmlStream, theElemName, theAttrs=None)

Represents an element in a markup stream.

__enter__()

Context manager support.

Returns:cpip.plot.SVGWriter.SVGGroup,cpip.plot.SVGWriter.SVGLine,cpip.plot.SVGWriter.SVGRect,cpip.plot.SVGWriter.SVGText,cpip.util.XmlWrite.Element – self
__exit__(excType, excValue, tb)

Context manager support. TODO: Should respect RAISE_ON_ERROR here if excType is not None.

Parameters:
  • excType (NoneType) – Exception type, if raised.
  • excValue (NoneType) – Exception, if raised.
  • tb (NoneType) – Traceback, if raised.
Returns:

NoneType

__init__(theXmlStream, theElemName, theAttrs=None)

Constructor.

Parameters:
  • theXmlStream (cpip.plot.SVGWriter.SVGWriter, cpip.util.XmlWrite.XhtmlStream) – The XML stream.
  • theElemName (str) – Element name.
  • theAttrs (NoneType, dict({str : [str]}), dict({})) – Element attributes
Returns:

NoneType

__weakref__

list of weak references to the object (if defined)

exception cpip.util.XmlWrite.ExceptionXml

Exception specialisation for the XML writer.

exception cpip.util.XmlWrite.ExceptionXmlEndElement

Exception specialisation for end of element.

cpip.util.XmlWrite.RAISE_ON_ERROR = True

Global flag that sets the error behaviour

If True then this module may raise an ExceptionXml and that might mask other exceptions.

If False no ExceptionXml will be raised but a logging.error(...) will be written. These will not mask other Exceptions.

class cpip.util.XmlWrite.XhtmlStream(theFout, theEnc='utf-8', theDtdLocal=None, theId=0, mustIndent=True)

Specialisation of an XmlStream to handle XHTML.

__enter__()

Context manager support.

Returns:cpip.util.XmlWrite.XhtmlStream – self
charactersWithBr(sIn)

Writes the string replacing any \n characters with <br/> elements.

Parameters:sIn (str) – The string to write.
Returns:NoneType
class cpip.util.XmlWrite.XmlStream(theFout, theEnc='utf-8', theDtdLocal=None, theId=0, mustIndent=True)

Creates and maintains an XML output stream.

__enter__()

Context manager support.

Returns:cpip.plot.SVGWriter.SVGWriter,cpip.util.XmlWrite.XhtmlStream – self
__exit__(exc_type, exc_value, traceback)

Context manager support.

Parameters:
  • excType (NoneType) – Exception type, if raised.
  • excValue (NoneType) – Exception, if raised.
  • tb (NoneType) – Traceback, if raised.
Returns:

NoneType

__init__(theFout, theEnc='utf-8', theDtdLocal=None, theId=0, mustIndent=True)

Initialise with a writable file like object or a file path.

Parameters:
  • theFout (_io.TextIOWrapper, str) – The file-like object or a path as a string. If the latter it will be closed on __exit__.
  • theEnc (str) – The encoding to be used.
  • theDtdLocal (NoneType, str) – Any local DTD as a string.
  • theId (int) – An integer value to use as an ID string.
  • mustIndent (bool) – Flag, if True the elements will be indented (pretty printed).
Returns:

NoneType

__weakref__

list of weak references to the object (if defined)

_canIndent

Returns True if indentation is possible (no mixed content etc.).

Returns:bool – True if the element can be indented.
_closeElemIfOpen()

Close the element if open.

Returns:NoneType
_encode(theStr)

“Apply the XML encoding such as '<' to '&lt;'

Parameters:theStr (str) – String to encode.
Returns:str – Encoded string.
_flipIndent(theBool)

Set the value at the tip of the indent stack to the given value.

Parameters:theBool (bool) – Flag for indenting.
Returns:NoneType
_indent(offset=0)

Write out the indent string.

Parameters:offset (int) – The offset.
Returns:NoneType
characters(theString)

Encodes the string and writes it to the output.

Parameters:theString (str) – The content.
Returns:NoneType
comment(theS, newLine=False)

Writes a comment to the output stream.

Parameters:
  • theS (str) – The comment.
  • newLine (bool) – If True the comment is written on a new line, if False it is written inline.
Returns:

NoneType

endElement(name)

Ends an element.

Parameters:name (str) – Element name.
Returns:NoneType
id

A unique ID in this stream. The ID is incremented on each call.

Returns:str – The ID.
literal(theString)

Writes theString to the output without encoding.

Parameters:theString (str) – The content.
Returns:NoneType
pI(theS)

Writes a Processing Instruction to the output stream.

startElement(name, attrs)

Opens a named element with attributes.

Parameters:
  • name (str) – Element name.
  • attrs (dict({str : [str]}), dict({})) – Element attributes.
Returns:

NoneType

writeCDATA(theData)

Writes a CDATA section.

Example:

<![CDATA[
...
]]>
Parameters:theData (str) – The CDATA content.
Returns:NoneType
writeCSS(theCSSMap)

Writes a style sheet as a CDATA section. Expects a dict of dicts.

Example:

<style type="text/css"><![CDATA[
    ...
]]></style>
Parameters:theCSSMap (dict({str : [dict({str : [str]}), dict({str : [str]})]})) – Map of CSS elements.
Returns:NoneType
writeECMAScript(theScript)

Writes the ECMA script.

Example:

<script type="text/ecmascript">
//<![CDATA[
...
// ]]>
</script>
Parameters:theData (str) – The ECMA script content.
Returns:NoneType
xmlSpacePreserve()

Suspends indentation for this element and its descendants.

Returns:NoneType
cpip.util.XmlWrite.decodeString(theS)

Returns a string that is the argument decoded. May raise a TypeError.

cpip.util.XmlWrite.encodeString(theS, theCharPrefix='_')

Returns a string that is the argument encoded.

From RFC3548:

                   Table 1: The Base 64 Alphabet
Value Encoding  Value Encoding  Value Encoding  Value Encoding
    0 A            17 R            34 i            51 z
    1 B            18 S            35 j            52 0
    2 C            19 T            36 k            53 1
    3 D            20 U            37 l            54 2
    4 E            21 V            38 m            55 3
    5 F            22 W            39 n            56 4
    6 G            23 X            40 o            57 5
    7 H            24 Y            41 p            58 6
    8 I            25 Z            42 q            59 7
    9 J            26 a            43 r            60 8
   10 K            27 b            44 s            61 9
   11 L            28 c            45 t            62 +
   12 M            29 d            46 u            63 /
   13 N            30 e            47 v
   14 O            31 f            48 w         (pad) =
   15 P            32 g            49 x
   16 Q            33 h            50 y

See section 3 of : http://www.faqs.org/rfcs/rfc3548.html

Parameters:
  • theS (str) – The string to be encoded.
  • theCharPrefix (str) – A character to prefix the string.
Returns:

str – Encoded string.

cpip.util.XmlWrite.nameFromString(theStr)

Returns a name from a string.

See http://www.w3.org/TR/1999/REC-html401-19991224/types.html#type-cdata

“ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens (“-”), underscores (“_”), colons (”:”), and periods (”.”).

This also works for in namespaces as ‘:’ is not used in the encoding.

Parameters:theStr (str) – The string to be encoded.
Returns:str – Encoded string.