Return to validSchemas.py CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / python / tests |
1.1 ! misho 1: #!/usr/bin/python -u ! 2: import libxml2 ! 3: import sys ! 4: ! 5: ARG = 'test string' ! 6: ! 7: class ErrorHandler: ! 8: ! 9: def __init__(self): ! 10: self.errors = [] ! 11: ! 12: def handler(self, msg, data): ! 13: if data != ARG: ! 14: raise Exception, "Error handler did not receive correct argument" ! 15: self.errors.append(msg) ! 16: ! 17: # Memory debug specific ! 18: libxml2.debugMemory(1) ! 19: ! 20: schema="""<?xml version="1.0" encoding="iso-8859-1"?> ! 21: <schema xmlns = "http://www.w3.org/2001/XMLSchema"> ! 22: <element name = "Customer"> ! 23: <complexType> ! 24: <sequence> ! 25: <element name = "FirstName" type = "string" /> ! 26: <element name = "MiddleInitial" type = "string" /> ! 27: <element name = "LastName" type = "string" /> ! 28: </sequence> ! 29: <attribute name = "customerID" type = "integer" /> ! 30: </complexType> ! 31: </element> ! 32: </schema>""" ! 33: ! 34: valid="""<?xml version="1.0" encoding="iso-8859-1"?> ! 35: <Customer customerID = "24332"> ! 36: <FirstName>Raymond</FirstName> ! 37: <MiddleInitial>G</MiddleInitial> ! 38: <LastName>Bayliss</LastName> ! 39: </Customer> ! 40: """ ! 41: ! 42: invalid="""<?xml version="1.0" encoding="iso-8859-1"?> ! 43: <Customer customerID = "24332"> ! 44: <MiddleInitial>G</MiddleInitial> ! 45: <LastName>Bayliss</LastName> ! 46: </Customer> ! 47: """ ! 48: ! 49: e = ErrorHandler() ! 50: ctxt_parser = libxml2.schemaNewMemParserCtxt(schema, len(schema)) ! 51: ctxt_schema = ctxt_parser.schemaParse() ! 52: ctxt_valid = ctxt_schema.schemaNewValidCtxt() ! 53: ctxt_valid.setValidityErrorHandler(e.handler, e.handler, ARG) ! 54: ! 55: # Test valid document ! 56: doc = libxml2.parseDoc(valid) ! 57: ret = doc.schemaValidateDoc(ctxt_valid) ! 58: if ret != 0 or e.errors: ! 59: print "error doing schema validation" ! 60: sys.exit(1) ! 61: doc.freeDoc() ! 62: ! 63: # Test invalid document ! 64: doc = libxml2.parseDoc(invalid) ! 65: ret = doc.schemaValidateDoc(ctxt_valid) ! 66: if ret == 0 or not e.errors: ! 67: print "Error: document supposer to be schema invalid" ! 68: sys.exit(1) ! 69: doc.freeDoc() ! 70: ! 71: del ctxt_parser ! 72: del ctxt_schema ! 73: del ctxt_valid ! 74: libxml2.schemaCleanupTypes() ! 75: ! 76: # Memory debug specific ! 77: libxml2.cleanupParser() ! 78: if libxml2.debugMemory(1) == 0: ! 79: print "OK" ! 80: else: ! 81: print "Memory leak %d bytes" % (libxml2.debugMemory(1)) ! 82: libxml2.dumpMemory() ! 83: