Annotation of embedaddon/libxml2/python/tests/validSchemas.py, revision 1.1.1.1

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: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>