Annotation of embedaddon/libxml2/python/tests/validRNG.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"?>
21: <element name="foo"
22: xmlns="http://relaxng.org/ns/structure/1.0"
23: xmlns:a="http://relaxng.org/ns/annotation/1.0"
24: xmlns:ex1="http://www.example.com/n1"
25: xmlns:ex2="http://www.example.com/n2">
26: <a:documentation>A foo element.</a:documentation>
27: <element name="ex1:bar1">
28: <empty/>
29: </element>
30: <element name="ex2:bar2">
31: <empty/>
32: </element>
33: </element>
34: """
35:
36: valid="""<?xml version="1.0"?>
37: <foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1"/><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
38:
39: invalid="""<?xml version="1.0"?>
40: <foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1">bad</pre1:bar1><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
41:
42: rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
43: rngs = rngp.relaxNGParse()
44: ctxt = rngs.relaxNGNewValidCtxt()
45: e = ErrorHandler()
46: ctxt.setValidityErrorHandler(e.handler, e.handler, ARG)
47:
48: # Test valid document
49: doc = libxml2.parseDoc(valid)
50: ret = doc.relaxNGValidateDoc(ctxt)
51: if ret != 0 or e.errors:
52: print "error doing RelaxNG validation"
53: sys.exit(1)
54: doc.freeDoc()
55:
56: # Test invalid document
57: doc = libxml2.parseDoc(invalid)
58: ret = doc.relaxNGValidateDoc(ctxt)
59: if ret == 0 or not e.errors:
60: print "Error: document supposed to be RelaxNG invalid"
61: sys.exit(1)
62: doc.freeDoc()
63:
64: del rngp
65: del rngs
66: del ctxt
67: libxml2.relaxNGCleanupTypes()
68:
69: # Memory debug specific
70: libxml2.cleanupParser()
71: if libxml2.debugMemory(1) == 0:
72: print "OK"
73: else:
74: print "Memory leak %d bytes" % (libxml2.debugMemory(1))
75: libxml2.dumpMemory()
76:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>