123 lines · 2.5 KB · Python
RawDownload
#!/usr/bin/python -u## this tests the entities substitutions with the XmlTextReader interface#import sysimport StringIOimport libxml2 schema="""<element name="foo" xmlns="http://relaxng.org/ns/structure/1.0"         datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">  <oneOrMore>    <element name="label">      <text/>    </element>    <optional>      <element name="opt">        <empty/>      </element>    </optional>    <element name="item">      <data type="byte"/>    </element>  </oneOrMore></element>"""# Memory debug specificlibxml2.debugMemory(1) ## Parse the Relax NG Schemas# rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))rngs = rngp.relaxNGParse()del rngp ## Parse and validate the correct document#docstr="""<foo><label>some text</label><item>100</item></foo>""" f = StringIO.StringIO(docstr)input = libxml2.inputBuffer(f)reader = input.newTextReader("correct")reader.RelaxNGSetSchema(rngs)ret = reader.Read()while ret == 1:    ret = reader.Read() if ret != 0:    print "Error parsing the document"    sys.exit(1) if reader.IsValid() != 1:    print "Document failed to validate"    sys.exit(1) ## Parse and validate the incorrect document#docstr="""<foo><label>some text</label><item>1000</item></foo>""" err=""# RNG errors are not as good as before , TODO#expect="""RNG validity error: file error line 3 element text#Type byte doesn't allow value '1000'#RNG validity error: file error line 3 element text#Error validating datatype byte#RNG validity error: file error line 3 element text#Element item failed to validate content#"""expect="""Type byte doesn't allow value '1000'Error validating datatype byteElement item failed to validate content""" def callback(ctx, str):    global err    err = err + "%s" % (str)libxml2.registerErrorHandler(callback, "") f = StringIO.StringIO(docstr)input = libxml2.inputBuffer(f)reader = input.newTextReader("error")reader.RelaxNGSetSchema(rngs)ret = reader.Read()while ret == 1:    ret = reader.Read() if ret != 0:    print "Error parsing the document"    sys.exit(1) if reader.IsValid() != 0:    print "Document failed to detect the validation error"    sys.exit(1) if err != expect:    print "Did not get the expected error message:"    print err    sys.exit(1) ## cleanup#del fdel inputdel readerdel rngslibxml2.relaxNGCleanupTypes() # Memory debug specificlibxml2.cleanupParser()if libxml2.debugMemory(1) == 0:    print "OK"else:    print "Memory leak %d bytes" % (libxml2.debugMemory(1))    libxml2.dumpMemory()

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t