golden hour
/opt/imunify360/venv/lib/python3.11/site-packages/lxml
⬆️ Go Up
Upload
File/Folder
Size
Actions
ElementInclude.py
8.36 KB
Del
OK
__init__.py
575 B
Del
OK
__pycache__
-
Del
OK
_elementpath.cpython-311-x86_64-linux-gnu.so
419.42 KB
Del
OK
_elementpath.py
10.49 KB
Del
OK
apihelpers.pxi
62.94 KB
Del
OK
builder.cpython-311-x86_64-linux-gnu.so
222.23 KB
Del
OK
builder.py
7.96 KB
Del
OK
classlookup.pxi
21.94 KB
Del
OK
cleanup.pxi
8.26 KB
Del
OK
cssselect.py
3.29 KB
Del
OK
debug.pxi
3.21 KB
Del
OK
docloader.pxi
5.65 KB
Del
OK
doctestcompare.py
17.91 KB
Del
OK
dtd.pxi
14.86 KB
Del
OK
etree.cpython-311-x86_64-linux-gnu.so
8.46 MB
Del
OK
etree.h
8.37 KB
Del
OK
etree.pyx
129.31 KB
Del
OK
etree_api.h
17.06 KB
Del
OK
extensions.pxi
32.46 KB
Del
OK
html
-
Del
OK
includes
-
Del
OK
isoschematron
-
Del
OK
iterparse.pxi
16.22 KB
Del
OK
lxml.etree.h
8.37 KB
Del
OK
lxml.etree_api.h
17.06 KB
Del
OK
nsclasses.pxi
8.93 KB
Del
OK
objectify.cpython-311-x86_64-linux-gnu.so
4.25 MB
Del
OK
objectify.pyx
75.29 KB
Del
OK
objectpath.pxi
11.21 KB
Del
OK
parser.pxi
76.41 KB
Del
OK
parsertarget.pxi
6.7 KB
Del
OK
proxy.pxi
23.01 KB
Del
OK
public-api.pxi
6.5 KB
Del
OK
pyclasslookup.py
92 B
Del
OK
readonlytree.pxi
18.6 KB
Del
OK
relaxng.pxi
5.94 KB
Del
OK
sax.cpython-311-x86_64-linux-gnu.so
366.73 KB
Del
OK
sax.py
9.18 KB
Del
OK
saxparser.pxi
31.78 KB
Del
OK
schematron.pxi
5.65 KB
Del
OK
serializer.pxi
66.41 KB
Del
OK
usedoctest.py
230 B
Del
OK
xinclude.pxi
2.4 KB
Del
OK
xmlerror.pxi
48.37 KB
Del
OK
xmlid.pxi
5.92 KB
Del
OK
xmlschema.pxi
7.89 KB
Del
OK
xpath.pxi
19.11 KB
Del
OK
xslt.pxi
35.83 KB
Del
OK
xsltext.pxi
10.83 KB
Del
OK
Edit: schematron.pxi
# 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(''' ... <schema xmlns="http://www.ascc.net/xml/schematron" > ... <pattern name="id is the only permitted attribute name"> ... <rule context="*"> ... <report test="@*[not(name()='id')]">Attribute ... <name path="@*[not(name()='id')]"/> is forbidden<name/> ... </report> ... </rule> ... </pattern> ... </schema> ... ''')) >>> xml = XML(''' ... <AAA name="aaa"> ... <BBB id="bbb"/> ... <CCC color="ccc"/> ... </AAA> ... ''') >>> schematron.validate(xml) 0 >>> xml = XML(''' ... <AAA id="aaa"> ... <BBB id="bbb"/> ... <CCC/> ... </AAA> ... ''') >>> 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, <void*>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
Save