Viewing file: drv_xmlproc_val.py (1.73 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
""" A SAX driver for xmlproc with validation and DTD information.
$Id: drv_xmlproc_val.py,v 1.9 2001/12/30 12:13:45 loewis Exp $ """
version="0.92"
from xml.sax import saxlib,saxutils from xml.parsers.xmlproc import xmlval from xml.sax.drivers.drv_xmlproc import *
import types
# --- SAX_XPValParser
class SAX_XPValParser(SAX_XPParser):
def __init__(self): SAX_XPParser.__init__(self)
def _create_parser(self): return xmlval.XMLValidator()
def handle_start_tag(self, name, attrs): try: self.doc_handler.startElement(name, XPAttributes(attrs,\ self.parser.dtd.get_elem(name))) except KeyError,e: self.doc_handler.startElement(name,XPAttributes(attrs,None))
# --- EXPERIMENTAL PYTHON SAX EXTENSIONS:
def get_parser_name(self): return "xmlproc_val"
def get_driver_version(self): return version
def is_validating(self): return 1
# --- XPAttributes
class XPAttributes(saxutils.AttributeMap):
def __init__(self,map,elemdecl): saxutils.AttributeMap.__init__(self,map) self.elemdecl=elemdecl
if elemdecl==None: self.getType=self.getTypeStatic
def getTypeStatic(self,i): return "CDATA" # Used for undeclared elements
def getType(self, i): if type(i)==types.IntType: try: i=self.map.keys()[i] except KeyError,e: return "CDATA"
try: return self.elemdecl.get_attr(i).get_type() except KeyError,e: return "CDATA"
# --- Global functions
def create_parser(): return SAX_XPValParser()
|