[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.226.93.177: ~ $
#!/usr/bin/python -u
#
# this tests the DTD validation with the XmlTextReader interface
#
import sys
import glob
import string
import libxml2
try:
    import StringIO
    str_io = StringIO.StringIO
except:
    import io
    str_io = io.StringIO

# Memory debug specific
libxml2.debugMemory(1)

err=""
expect="""../../test/valid/rss.xml:177: element rss: validity error : Element rss does not carry attribute version
</rss>
      ^
../../test/valid/xlink.xml:450: element termdef: validity error : ID dt-arc already defined
	<p><termdef id="dt-arc" term="Arc">An <ter
	                                  ^
../../test/valid/xlink.xml:530: validity error : attribute def line 199 references an unknown ID "dt-xlg"

^
"""
def callback(ctx, str):
    global err
    err = err + "%s" % (str)
libxml2.registerErrorHandler(callback, "")

valid_files = glob.glob("../../test/valid/*.x*")
valid_files.sort()
for file in valid_files:
    if file.find("t8") != -1:
        continue
    if file == "../../test/valid/rss.xml":
        continue
    if file == "../../test/valid/xlink.xml":
        continue
    reader = libxml2.newTextReaderFilename(file)
    #print "%s:" % (file)
    reader.SetParserProp(libxml2.PARSER_VALIDATE, 1)
    ret = reader.Read()
    while ret == 1:
        ret = reader.Read()
    if ret != 0:
        print("Error parsing and validating %s" % (file))
	#sys.exit(1)

if err != expect:
    print(err)

#
# another separate test based on Stephane Bidoul one
#
s = """
<!DOCTYPE test [
<!ELEMENT test (x,b)>
<!ELEMENT x (c)>
<!ELEMENT b (#PCDATA)>
<!ELEMENT c (#PCDATA)>
<!ENTITY x "<x><c>xxx</c></x>">
]>
<test>
    &x;
    <b>bbb</b>
</test>
"""
expect="""10,test
1,test
14,#text
1,x
1,c
3,#text
15,c
15,x
14,#text
1,b
3,#text
15,b
14,#text
15,test
"""
res=""
err=""

input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test2")
reader.SetParserProp(libxml2.PARSER_LOADDTD,1)
reader.SetParserProp(libxml2.PARSER_DEFAULTATTRS,1)
reader.SetParserProp(libxml2.PARSER_SUBST_ENTITIES,1)
reader.SetParserProp(libxml2.PARSER_VALIDATE,1)
while reader.Read() == 1:
    res = res + "%s,%s\n" % (reader.NodeType(),reader.Name())

if res != expect:
    print("test2 failed: unexpected output")
    print(res)
    sys.exit(1)
if err != "":
    print("test2 failed: validation error found")
    print(err)
    sys.exit(1)

#
# Another test for external entity parsing and validation
#

s = """<!DOCTYPE test [
<!ELEMENT test (x)>
<!ELEMENT x (#PCDATA)>
<!ENTITY e SYSTEM "tst.ent">
]>
<test>
  &e;
</test>
"""
tst_ent = """<x>hello</x>"""
expect="""10 test
1 test
14 #text
1 x
3 #text
15 x
14 #text
15 test
"""
res=""

def myResolver(URL, ID, ctxt):
    if URL == "tst.ent":
        return(str_io(tst_ent))
    return None

libxml2.setEntityLoader(myResolver)

input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test3")
reader.SetParserProp(libxml2.PARSER_LOADDTD,1)
reader.SetParserProp(libxml2.PARSER_DEFAULTATTRS,1)
reader.SetParserProp(libxml2.PARSER_SUBST_ENTITIES,1)
reader.SetParserProp(libxml2.PARSER_VALIDATE,1)
while reader.Read() == 1:
    res = res + "%s %s\n" % (reader.NodeType(),reader.Name())

if res != expect:
    print("test3 failed: unexpected output")
    print(res)
    sys.exit(1)
if err != "":
    print("test3 failed: validation error found")
    print(err)
    sys.exit(1)

#
# Another test for recursive entity parsing, validation, and replacement of
# entities, making sure the entity ref node doesn't show up in that case
#

s = """<!DOCTYPE test [
<!ELEMENT test (x, x)>
<!ELEMENT x (y)>
<!ELEMENT y (#PCDATA)>
<!ENTITY x "<x>&y;</x>">
<!ENTITY y "<y>yyy</y>">
]>
<test>
  &x;
  &x;
</test>"""
expect="""10 test 0
1 test 0
14 #text 1
1 x 1
1 y 2
3 #text 3
15 y 2
15 x 1
14 #text 1
1 x 1
1 y 2
3 #text 3
15 y 2
15 x 1
14 #text 1
15 test 0
"""
res=""
err=""

input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test4")
reader.SetParserProp(libxml2.PARSER_LOADDTD,1)
reader.SetParserProp(libxml2.PARSER_DEFAULTATTRS,1)
reader.SetParserProp(libxml2.PARSER_SUBST_ENTITIES,1)
reader.SetParserProp(libxml2.PARSER_VALIDATE,1)
while reader.Read() == 1:
    res = res + "%s %s %d\n" % (reader.NodeType(),reader.Name(),reader.Depth())

if res != expect:
    print("test4 failed: unexpected output")
    print(res)
    sys.exit(1)
if err != "":
    print("test4 failed: validation error found")
    print(err)
    sys.exit(1)

#
# The same test but without entity substitution this time
#

s = """<!DOCTYPE test [
<!ELEMENT test (x, x)>
<!ELEMENT x (y)>
<!ELEMENT y (#PCDATA)>
<!ENTITY x "<x>&y;</x>">
<!ENTITY y "<y>yyy</y>">
]>
<test>
  &x;
  &x;
</test>"""
expect="""10 test 0
1 test 0
14 #text 1
5 x 1
14 #text 1
5 x 1
14 #text 1
15 test 0
"""
res=""
err=""

input = libxml2.inputBuffer(str_io(s))
reader = input.newTextReader("test5")
reader.SetParserProp(libxml2.PARSER_VALIDATE,1)
while reader.Read() == 1:
    res = res + "%s %s %d\n" % (reader.NodeType(),reader.Name(),reader.Depth())

if res != expect:
    print("test5 failed: unexpected output")
    print(res)
if err != "":
    print("test5 failed: validation error found")
    print(err)

#
# cleanup
#
del input
del reader

# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
    print("OK")
else:
    print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
    libxml2.dumpMemory()

Filemanager

Name Type Size Permission Actions
TODO File 1.58 KB 0644
apibuild.py File 79.75 KB 0755
attribs.py File 819 B 0755
build.py File 1.51 KB 0755
compareNodes.py File 1.48 KB 0755
ctxterror.py File 1.29 KB 0755
cutnpaste.py File 1.26 KB 0755
dtdvalid.py File 619 B 0755
error.py File 1.04 KB 0755
inbuf.py File 498 B 0755
index.py File 32.14 KB 0755
indexes.py File 2.9 KB 0755
input_callback.py File 5.01 KB 0755
libxml2class.txt File 22.42 KB 0644
nsdel.py File 1.55 KB 0755
outbuf.py File 3.07 KB 0755
push.py File 769 B 0755
pushSAX.py File 1.46 KB 0755
pushSAXhtml.py File 1.57 KB 0755
python.html File 19.46 KB 0644
reader.py File 12.23 KB 0755
reader2.py File 5.22 KB 0755
reader3.py File 4.06 KB 0755
reader4.py File 1.15 KB 0755
reader5.py File 1.22 KB 0755
reader6.py File 2.61 KB 0755
reader7.py File 1.72 KB 0755
reader8.py File 683 B 0755
readererr.py File 1.25 KB 0755
readernext.py File 2.43 KB 0755
regexp.py File 716 B 0755
relaxng.py File 1.17 KB 0755
resolver.py File 857 B 0755
schema.py File 1.28 KB 0755
serialize.py File 4.18 KB 0755
sync.py File 3.44 KB 0755
thread2.py File 2.25 KB 0755
tst.py File 587 B 0755
tstLastError.py File 2.83 KB 0755
tstURI.py File 1.08 KB 0755
tstmem.py File 720 B 0755
tstxpath.py File 1.43 KB 0755
validDTD.py File 1.2 KB 0755
validRNG.py File 1.9 KB 0755
validSchemas.py File 2.02 KB 0755
validate.py File 1.68 KB 0755
walker.py File 2.35 KB 0755
xpath.py File 1.17 KB 0755
xpathext.py File 1.1 KB 0755
xpathleak.py File 1.53 KB 0755
xpathns.py File 552 B 0755
xpathret.py File 1.29 KB 0755