Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions list.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#! usr/bin/env python
import optparse, libxml2, sys

def validate(xml_file, dtd_file):
doc = libxml2.parseFile(xml_file)
dtd = libxml2.parseDTD(None, dtd_file)
ctxt = libxml2.newValidCtxt()
ret = doc.validateDtd(ctxt, dtd)
dtd.freeDtd()
doc.freeDoc()
return ret


def main():
op = optparse.OptionParser(description = U"check", prog = "dtd", version = "0.1", usage = U"%prog")
op.add_option("-x", "--xml", dest = "xml", help = U"XML Doc", metavar = "XML_FILE")
op.add_option("-d", "--dtd", dest = "dtd", help = U"DTD Doc", metavar = "DTD_FILE")
options, arguments = op.parse_args()
if options.xml and options.dtd:
validate(options.xml, options.dtd)
else:
op.print_help()

if __name__ == "__main__":
main()
9 changes: 9 additions & 0 deletions mephi.dtd
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!ELEMENT University (faculty+)>
<!ELEMENT faculty (caf+)>
<!ELEMENT caf (group+)>
<!ELEMENT group (student+)>
<!ELEMENT student (#PCDATA)>
<!ATTLIST University name CDATA #REQUIRED>
<!ATTLIST faculty name CDATA #REQUIRED>
<!ATTLIST caf number CDATA #REQUIRED>
<!ATTLIST group number CDATA #REQUIRED>
20 changes: 20 additions & 0 deletions mephi.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE University SYSTEM "mephi.dtd">
<University name = "MEPhI">
<faculty name = 'K'>
<caf number = "36">
<group number = "362">
<student>Molochkov</student>
<student>Ivanov</student>
<student>Petrov</student>
</group>
<group number = "361">
<student>Titorenko</student>
<student>Sidorov</student>
<student>Ryabov</student>
</group>
</caf>
</faculty>
</University>