[prev in list] [next in list] [prev in thread] [next in thread]
List: python-xml-sig
Subject: [XML-SIG] [ pyxml-Bugs-658932 ] validate and handle content at the same
From: noreply () sourceforge ! net (noreply () sourceforge ! net)
Date: 2002-12-27 9:26:39
Message-ID: E18RqlL-0001D9-00 () sc8-sf-web2 ! sourceforge ! net
[Download RAW message or body]
Bugs item #658932, was opened at 2002-12-27 10:26
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=106473&aid=658932&group_id=6473
Category: xmlproc
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Remy C. Cool (remycool)
Assigned to: Lars Marius Garshol (larsga)
Summary: validate and handle content at the same
Initial Comment:
Debian GNU/Lunux testing
Python version 2.1
When parser.setFeature(feature_validation, 1) is set ...
the DTD is
checked against the XML file but closing tags are not
being printed.
When parser.setFeature(feature_validation, 0) is set or
the line is
commented out, closing tags are printed but the xml file is
not
validated against the DTD. How can I get both ... a
working
endElement handler and DTD validation?
-- example --
#!/usr/bin/python
#
# XML validator
#
import sys
from xml.sax import make_parser
from xml.sax.handler import feature_namespaces,
feature_validation
from xml.sax.handler import ContentHandler,
ErrorHandler, DTDHandler
class validator(ContentHandler):
def __init__(self):
# initialize
self.warnings = []
self.errors = []
def endElement(self, name):
print name
def warning(self, exception):
self.warnings.append(exception)
def error(self, exception):
self.errors.append(exception)
def fatalError(self, exception):
self.errors.append(exception)
if __name__ == '__main__':
# get arguments
arguments = sys.argv
if len(arguments) > 1:
xml_file = arguments[1]
# create a parser
parser = make_parser('xml.sax.drivers2.drv_xmlproc')
# tell parser we are not interested in XML
namespaces
parser.setFeature(feature_namespaces, 0)
# tell parser to enable validation
parser.setFeature(feature_validation, 1)
# create the handler
valxml = validator()
# tell the parser to use our handler
parser.setContentHandler(valxml)
parser.setErrorHandler(valxml)
parser.setDTDHandler(valxml)
# Parse the input
parser.parse(xml_file)
# create report
print '='*30
print 'RESULTS: %s' % xml_file
print '='*30
print 'Warnings:', len(valxml.warnings)
print 'Errors :', len(valxml.errors)
print
if valxml.warnings:
for warning in valxml.warnings:
print 'Warning: %s' % str(warning)
if valxml.errors:
for error in valxml.errors:
print 'Error : %s' % str(error)
else:
# no xml file given
print 'Usage: xml_validate.py [xml-file]'
Kind regards,
Remy Cool
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=106473&aid=658932&group_id=6473
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic