# License:      wxWindows License
 #----------------------------------------------------------------------------
 import xml.sax
-import xml.sax.handler
-
+from activegrid.util.lang import *
 
 class XMLPrettyPrinter(xml.sax.ContentHandler):
     def __init__(self, indentationChar='    ', newlineChar='\n'):
 
     ## ContentHandler methods
     def startElement(self, name, attrs):
-        indentation = self.newlineChar + (self.indentationLevel * self.indentationChar)
+        indentation = self.newlineChar + (self.indentationChar * self.indentationLevel)
         # build attribute string
         attrstring = ''
         for attr in attrs.getNames():
         self.hitCharData = False
 
     def characters(self, content):
+##        print "--> characters(%s)" % content
         self.xmlOutput += content
         self.hitCharData = True
 
         self.indentationLevel -= 1
         indentation = ''
         if not self.hitCharData:
-##            indentation += self.newlineChar + (self.indentationLevel * self.indentationChar)
-            indentation += self.indentationLevel * self.indentationChar
+            indentation += self.newlineChar + (self.indentationChar * self.indentationLevel)
+##            indentation += self.indentationChar * self.indentationLevel
         else:
             self.hitCharData = False
-        self.xmlOutput += '%s</%s>%s' % (indentation, self.elementStack.pop(), self.newlineChar)
+##        self.xmlOutput += '%s</%s>%s' % (indentation, self.elementStack.pop(), self.newlineChar)
+        self.xmlOutput += '%s</%s>' % (indentation, self.elementStack.pop())
 
     def getXMLString(self):
         return self.xmlOutput[1:]
     xml.sax.parseString(xmlstr, xpp)
     return xpp.getXMLString()
 
-if __name__ == '__main__':
+if isMain(__name__):
     simpleTestString = """<one>some text<two anattr="booga">two's data</two></one>"""
-    print prettyprint(simpleTestString)
+    print xmlprettyprint(simpleTestString)