diff --git a/mephi.dtd b/mephi.dtd new file mode 100644 index 0000000..9a0ec6b --- /dev/null +++ b/mephi.dtd @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/mephi.xml b/mephi.xml new file mode 100644 index 0000000..a9b86a4 --- /dev/null +++ b/mephi.xml @@ -0,0 +1,21 @@ + + + + +Anisimova-Nataly +Artemev-Dmitriy +Jelouhova-Kiril +Jelouhova-Alena +Zamanov-Ainur +Miheev-Denis +Pivovarov-Alexandr +Samsonov-Artem +Soloveva-Anna +Sidorova-Lubov +Tarmazakov-Evgeniy +Titorenko-Aleksey +Shtanko-Alexandr + +kj + + diff --git a/mephi.xsd b/mephi.xsd new file mode 100644 index 0000000..f6717bd --- /dev/null +++ b/mephi.xsd @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/print b/print new file mode 100755 index 0000000..cf223e7 --- /dev/null +++ b/print @@ -0,0 +1,18 @@ +#! /usr/bin/env python +import sys, libxml2 +def open(xml_file): + doc = libxml2.parseFile(xml_file) + root = doc.getRootElement() + child = root.children + child = child.children + child = child.children + child = child.children + while child.next is not None : + print child.content + child =child.next +def main(argv): + if len(argv) != 2: + sys.stderr.write("Usage : %s xml_file" % (argv[0],)) + else: open(argv[1]) +if __name__ == '__main__': main(sys.argv) + diff --git a/valid b/valid new file mode 100755 index 0000000..65b1a11 --- /dev/null +++ b/valid @@ -0,0 +1,23 @@ +#!/usr/bin/env python +#-*- coding: UTF-8 -*- +import optparse +import sys, libxml2 +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"Проверка на соответствие DTD", prog="dtd", version="0.1", usage=U"%prog") + op.add_option("-x", "--xml", dest="xml", help=U"XML документ", metavar="XML_FILE") + op.add_option("-d", "--dtd", dest="dtd", help=U"DTD документ", 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() diff --git a/valid1 b/valid1 new file mode 100755 index 0000000..867972a --- /dev/null +++ b/valid1 @@ -0,0 +1,28 @@ +#!/usr/bin/env python +#-*- coding: UTF-8 -*- +import optparse +import sys, libxml2 +def schema_validate(xml_file, xsd_file): + ctxt = libxml2.schemaNewParserCtxt(xsd_file) + schema = ctxt.schemaParse() + validationCtxt = schema.schemaNewValidCtxt() + res = validationCtxt.schemaValidateFile(xml_file, 0) + #doc = libxml2.parseFile(xml_file) + #res = validationCtxt.schemaValidateDoc(doc) + #doc.freeDoc() + if res != 0: + print "VALIDATION FAILED" + else: + print "VALIDATED" + return res + +def main(): + op = optparse.OptionParser(description = U"Проверка на соответствие XSD", prog="xsd", version="0.1", usage=U"%prog") + op.add_option("-x", "--xml", dest="xml", help=U"XML документ", metavar="XML_FILE") + op.add_option("-s", "--xsd", dest="xsd", help=U"XSD документ", metavar="XSD_FILE") + options, arguments = op.parse_args() + if options.xml and options.xsd: + schema_validate(options.xml, options.xsd) + else: + op.print_help() +if __name__ == '__main__': main() diff --git a/xpath b/xpath new file mode 100755 index 0000000..627292f --- /dev/null +++ b/xpath @@ -0,0 +1,70 @@ +#! /usr/bin/env python +import sys, libxml2 +def open(xml_file): + doc = libxml2.parseFile (xml_file) + ctxt = doc.xpathNewContext() + # 1 + fak = ctxt.xpathEval("//fakultet[@fak='kib']/child::*") + print "1" + i=0; + for element in fak: + print fak[i].properties.content + i=i+1 + # 2 + stud = ctxt.xpathEval("//grop[@year>2010]/child::*") + print "2" + i=0; + for element in stud: + print stud[i].content + i=i+1 + # 3 & 8 + grop = ctxt.xpathEval("//student[@Name='Anisimova']/parent::*") + print "3&8" + i=0 + for element in grop: + for property in grop[i].properties: + print property + i=i+1 + # 4 + stud = ctxt.xpathEval("//grop[@year=2012 and @gr=361]/child::*") + i=0; + for element in stud: + i=i+1 + print "4" + print i + + #5 + st = ctxt.xpathEval("//kafedra[@kaf=36]/grop/child::*") + i=0; + for element in st: + i=i+1 + print "5" + print i + + #6???? + fak = ctxt.xpathEval("//fakultet[@fak=kib]/kafedra/grop/child::*") + i=0 + for element in fak: + i=i+1 + print "6" + print i + + #7 + fak = ctxt.xpathEval("//kafedra[@kaf=36]/ancestor::fakultet") + print "7" + print fak[0].properties + + ctxt.xpathFreeContext () + doc.freeDoc () + + + ctxt.xpathFreeContext () + doc.freeDoc () + + + +def main(argv): + if len(argv) != 2: + sys.stderr.write("Usage : %s xml_file" % (argv[0],)) + else: open(argv[1]) +if __name__ == '__main__': main(sys.argv)