Index: twisted/words/xish/domish.py =================================================================== --- twisted/words/xish/domish.py (revision 4949) +++ twisted/words/xish/domish.py (working copy) @@ -5,7 +5,7 @@ from __future__ import generators -import types +from types import StringTypes, TupleType from zope.interface import implements, Interface, Attribute @@ -49,8 +49,8 @@ return False def serialize(self, elem, closeElement=1, defaultUri=''): - # Optimization shortcuts - write = self.writelist.append + # Optimization shortcuts + write = self.writelist.append # Shortcut, check to see if elem is actually a chunk o' serialized XML if isinstance(elem, SerializedXML): @@ -58,7 +58,7 @@ return # Shortcut, check to see if elem is actually a string (aka Cdata) - if isinstance(elem, types.StringTypes): + if isinstance(elem, StringTypes): write(escapeToXml(elem)) return @@ -79,45 +79,70 @@ if uri is None: uri = defaultUri - prefix = None + prefix = None if uri != defaultUri or uri in self.prefixes: prefix = self.getPrefix(uri) inScope = self.prefixInScope(prefix) # Create the starttag - + write("<") if not prefix: - write("<%s" % (name)) - else: - write("<%s:%s" % (prefix, name)) + write(name) + else: + write(prefix) + write(":") + write(name) if not inScope: - write(" xmlns:%s='%s'" % (prefix, uri)) + write(" xmlns:") + write(prefix) + write("='") + write(uri) + write("'") self.prefixStack[-1].append(prefix) inScope = True if defaultUri != currentDefaultUri and \ (uri != defaultUri or not prefix or not inScope): - write(" xmlns='%s'" % (defaultUri)) + write(" xmlns='") + write(defaultUri) + write("'") for p, u in elem.localPrefixes.iteritems(): - write(" xmlns:%s='%s'" % (p, u)) + write(" xmlns:") + write(p) + write("='") + write(u) + write("'") # Serialize attributes - for k,v in elem.attributes.items(): + for k, v in elem.attributes.items(): # If the attribute name is a tuple, it's a qualified attribute - if isinstance(k, types.TupleType): + if isinstance(k, TupleType): attr_uri, attr_name = k attr_prefix = self.getPrefix(attr_uri) if not self.prefixInScope(attr_prefix): - write(" xmlns:%s='%s'" % (attr_prefix, attr_uri)) - self.prefixStack[-1].append(attr_prefix) + write(" xmlns:") + write(attr_prefix) + write("='") + write(attr_uri) + write("'") + self.prefixStack[-1].append(attr_prefix) - write(" %s:%s='%s'" % (attr_prefix, attr_name, - escapeToXml(v, 1))) + write(" ") + write(attr_prefix) + write(":") + write(attr_name) + write("='") + write(escapeToXml(v, 1)) + write("'") else: - write((" %s='%s'" % ( k, escapeToXml(v, 1)))) + write(" ") + write(k) + write("='") + write(escapeToXml(v, 1)) + write("'") # Shortcut out if this is only going to return # the element (i.e. no children) @@ -128,19 +153,20 @@ # Serialize children if len(elem.children) > 0: write(">") - for c in elem.children: - self.serialize(c, defaultUri=defaultUri) + for c in elem.children: + self.serialize(c, defaultUri=defaultUri) # Add closing tag - if not prefix: - write("" % (name)) - else: - write("" % (prefix, name)) + write("") else: write("/>") self.prefixStack.pop() - SerializerClass = _ListSerializer def escapeToXml(text, isattrib = 0): @@ -428,12 +454,12 @@ """ Retrieve the first CData (content) node """ for n in self.children: - if isinstance(n, types.StringTypes): return n + if isinstance(n, StringTypes): return n return "" def _dqa(self, attr): """ Dequalify an attribute key as needed """ - if isinstance(attr, types.TupleType) and not attr[0]: + if isinstance(attr, TupleType) and not attr[0]: return attr[1] else: return attr @@ -470,7 +496,7 @@ def addContent(self, text): """ Add some text data to this Element. """ c = self.children - if len(c) > 0 and isinstance(c[-1], types.StringTypes): + if len(c) > 0 and isinstance(c[-1], StringTypes): c[-1] = c[-1] + text else: c.append(text)