home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / doc / python-libxml2 / examples / relaxng.py < prev    next >
Encoding:
Python Source  |  2003-02-09  |  1.2 KB  |  49 lines

  1. #!/usr/bin/python -u
  2. import libxml2
  3. import sys
  4.  
  5. # Memory debug specific
  6. libxml2.debugMemory(1)
  7.  
  8. schema="""<?xml version="1.0"?>
  9. <element name="foo"
  10.          xmlns="http://relaxng.org/ns/structure/1.0"
  11.          xmlns:a="http://relaxng.org/ns/annotation/1.0"
  12.          xmlns:ex1="http://www.example.com/n1"
  13.          xmlns:ex2="http://www.example.com/n2">
  14.   <a:documentation>A foo element.</a:documentation>
  15.   <element name="ex1:bar1">
  16.     <empty/>
  17.   </element>
  18.   <element name="ex2:bar2">
  19.     <empty/>
  20.   </element>
  21. </element>
  22. """
  23. instance="""<?xml version="1.0"?>
  24. <foo><pre1:bar1 xmlns:pre1="http://www.example.com/n1"/><pre2:bar2 xmlns:pre2="http://www.example.com/n2"/></foo>"""
  25.  
  26. rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
  27. rngs = rngp.relaxNGParse()
  28. ctxt = rngs.relaxNGNewValidCtxt()
  29. doc = libxml2.parseDoc(instance)
  30. ret = doc.relaxNGValidateDoc(ctxt)
  31. if ret != 0:
  32.     print "error doing RelaxNG validation"
  33.     sys.exit(1)
  34.  
  35. doc.freeDoc()
  36. del rngp
  37. del rngs
  38. del ctxt
  39. libxml2.relaxNGCleanupTypes()
  40.  
  41. # Memory debug specific
  42. libxml2.cleanupParser()
  43. if libxml2.debugMemory(1) == 0:
  44.     print "OK"
  45. else:
  46.     print "Memory leak %d bytes" % (libxml2.debugMemory(1))
  47.     libxml2.dumpMemory()
  48.  
  49.