SAX.setDocumentLocator() SAX.startDocument() SAX.internalSubset(doc, , ) SAX.attributeDecl(normId, attr, 8, 3, NULL, ...) SAX.externalSubset(doc, , ) SAX.startElement(doc) SAX.characters( , 3) SAX.comment( no normalization ) SAX.characters( , 3) SAX.startElement(norm, attr=' ') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr=' foo bar ') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr=' foobar') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr=' foo bar ') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr='foobar ') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr=' & ') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr=' foo&bar ') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr=' foobar&') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr='&foo bar ') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr='foobar &') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr=' < ') SAX.endElement(norm) SAX.characters( , 3) SAX.startElement(norm, attr=' foo