/opt/cloudlinux/venv/lib/python3.11/site-packages/lxml
NameSizeModeActions
html/-0755rm
includes/-0755rm
isoschematron/-0755rm
__pycache__/-0755rm
apihelpers.pxi644520644editdlrm
builder.cpython-311-x86_64-linux-gnu.so1236240755editdlrm
builder.py81470644editdlrm
classlookup.pxi224620644editdlrm
cleanup.pxi84580644editdlrm
cssselect.py33660644editdlrm
debug.pxi32830644editdlrm
docloader.pxi57830644editdlrm
doctestcompare.py183390644editdlrm
dtd.pxi152190644editdlrm
ElementInclude.py85600644editdlrm
etree.cpython-311-x86_64-linux-gnu.so57972400755editdlrm
etree.h85750644editdlrm
etree.pyx1324150644editdlrm
etree_api.h174670644editdlrm
extensions.pxi332410644editdlrm
iterparse.pxi166070644editdlrm
lxml.etree.h85750644editdlrm
lxml.etree_api.h174720644editdlrm
nsclasses.pxi91450644editdlrm
objectify.cpython-311-x86_64-linux-gnu.so33515200755editdlrm
objectify.pyx771000644editdlrm
objectpath.pxi114790644editdlrm
parser.pxi782470644editdlrm
parsertarget.pxi68590644editdlrm
proxy.pxi235620644editdlrm
public-api.pxi66600644editdlrm
pyclasslookup.py920644editdlrm
readonlytree.pxi190480644editdlrm
relaxng.pxi60850644editdlrm
sax.cpython-311-x86_64-linux-gnu.so2016800755editdlrm
sax.py93960644editdlrm
saxparser.pxi325420644editdlrm
schematron.pxi57820644editdlrm
serializer.pxi679990644editdlrm
usedoctest.py2300644editdlrm
xinclude.pxi24600644editdlrm
xmlerror.pxi495310644editdlrm
xmlid.pxi60640644editdlrm
xmlschema.pxi80790644editdlrm
xpath.pxi195710644editdlrm
xslt.pxi366940644editdlrm
xsltext.pxi110850644editdlrm
_elementpath.cpython-311-x86_64-linux-gnu.so2306800755editdlrm
_elementpath.py107420644editdlrm
__init__.py5750644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/lxml/schematron.pxi (5782B)
# support for Schematron validation from lxml.includes cimport schematron cdef class SchematronError(LxmlError): """Base class of all Schematron errors. """ cdef class SchematronParseError(SchematronError): """Error while parsing an XML document as Schematron schema. """ cdef class SchematronValidateError(SchematronError): """Error while validating an XML document with a Schematron schema. """ ################################################################################ # Schematron cdef class Schematron(_Validator): u"""Schematron(self, etree=None, file=None) A Schematron validator. Pass a root Element or an ElementTree to turn it into a validator. Alternatively, pass a filename as keyword argument 'file' to parse from the file system. Schematron is a less well known, but very powerful schema language. The main idea is to use the capabilities of XPath to put restrictions on the structure and the content of XML documents. Here is a simple example:: >>> schematron = Schematron(XML(''' ... ... ... ... Attribute ... is forbidden ... ... ... ... ... ''')) >>> xml = XML(''' ... ... ... ... ... ''') >>> schematron.validate(xml) 0 >>> xml = XML(''' ... ... ... ... ... ''') >>> schematron.validate(xml) 1 Schematron was added to libxml2 in version 2.6.21. Before version 2.6.32, however, Schematron lacked support for error reporting other than to stderr. This version is therefore required to retrieve validation warnings and errors in lxml. """ cdef schematron.xmlSchematron* _c_schema cdef xmlDoc* _c_schema_doc def __cinit__(self): self._c_schema = NULL self._c_schema_doc = NULL def __init__(self, etree=None, *, file=None): cdef _Document doc cdef _Element root_node cdef xmlNode* c_node cdef char* c_href cdef schematron.xmlSchematronParserCtxt* parser_ctxt = NULL _Validator.__init__(self) if not config.ENABLE_SCHEMATRON: raise SchematronError, \ u"lxml.etree was compiled without Schematron support." if etree is not None: doc = _documentOrRaise(etree) root_node = _rootNodeOrRaise(etree) self._c_schema_doc = _copyDocRoot(doc._c_doc, root_node._c_node) parser_ctxt = schematron.xmlSchematronNewDocParserCtxt(self._c_schema_doc) elif file is not None: filename = _getFilenameForFile(file) if filename is None: # XXX assume a string object filename = file filename = _encodeFilename(filename) with self._error_log: orig_loader = _register_document_loader() parser_ctxt = schematron.xmlSchematronNewParserCtxt(_cstr(filename)) _reset_document_loader(orig_loader) else: raise SchematronParseError, u"No tree or file given" if parser_ctxt is NULL: if self._c_schema_doc is not NULL: tree.xmlFreeDoc(self._c_schema_doc) self._c_schema_doc = NULL raise MemoryError() try: with self._error_log: orig_loader = _register_document_loader() self._c_schema = schematron.xmlSchematronParse(parser_ctxt) _reset_document_loader(orig_loader) finally: schematron.xmlSchematronFreeParserCtxt(parser_ctxt) if self._c_schema is NULL: raise SchematronParseError( u"Document is not a valid Schematron schema", self._error_log) def __dealloc__(self): schematron.xmlSchematronFree(self._c_schema) if self._c_schema_doc is not NULL: tree.xmlFreeDoc(self._c_schema_doc) def __call__(self, etree): u"""__call__(self, etree) Validate doc using Schematron. Returns true if document is valid, false if not.""" cdef _Document doc cdef _Element root_node cdef xmlDoc* c_doc cdef schematron.xmlSchematronValidCtxt* valid_ctxt cdef int ret assert self._c_schema is not NULL, "Schematron instance not initialised" doc = _documentOrRaise(etree) root_node = _rootNodeOrRaise(etree) valid_ctxt = schematron.xmlSchematronNewValidCtxt( self._c_schema, schematron.XML_SCHEMATRON_OUT_ERROR) if valid_ctxt is NULL: raise MemoryError() try: self._error_log.clear() schematron.xmlSchematronSetValidStructuredErrors( valid_ctxt, _receiveError, self._error_log) c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node) with nogil: ret = schematron.xmlSchematronValidateDoc(valid_ctxt, c_doc) _destroyFakeDoc(doc._c_doc, c_doc) finally: schematron.xmlSchematronFreeValidCtxt(valid_ctxt) if ret == -1: raise SchematronValidateError( u"Internal error in Schematron validation", self._error_log) if ret == 0: return True else: return False