GRAYBYTE WORDPRESS FILE MANAGER7535

Server IP : 198.54.121.189 / Your IP : 216.73.216.224
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/cloudlinux/venv/lib/python3.11/site-packages/lxml/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/lxml//xmlschema.pxi
#  support for XMLSchema validation
from lxml.includes cimport xmlschema


cdef class XMLSchemaError(LxmlError):
    """Base class of all XML Schema errors
    """

cdef class XMLSchemaParseError(XMLSchemaError):
    """Error while parsing an XML document as XML Schema.
    """

cdef class XMLSchemaValidateError(XMLSchemaError):
    """Error while validating an XML document with an XML Schema.
    """


################################################################################
# XMLSchema

cdef XPath _check_for_default_attributes = XPath(
    u"boolean(//xs:attribute[@default or @fixed][1])",
    namespaces={u'xs': u'http://www.w3.org/2001/XMLSchema'})


cdef class XMLSchema(_Validator):
    u"""XMLSchema(self, etree=None, file=None)
    Turn a document into an XML Schema validator.

    Either pass a schema as Element or ElementTree, or pass a file or
    filename through the ``file`` keyword argument.

    Passing the ``attribute_defaults`` boolean option will make the
    schema insert default/fixed attributes into validated documents.
    """
    cdef xmlschema.xmlSchema* _c_schema
    cdef _Document _doc
    cdef bint _has_default_attributes
    cdef bint _add_attribute_defaults

    def __cinit__(self):
        self._has_default_attributes = True # play it safe
        self._add_attribute_defaults = False

    def __init__(self, etree=None, *, file=None, bint attribute_defaults=False):
        cdef xmlschema.xmlSchemaParserCtxt* parser_ctxt
        cdef xmlDoc* c_doc

        self._add_attribute_defaults = attribute_defaults
        _Validator.__init__(self)
        c_doc = NULL
        if etree is not None:
            doc = _documentOrRaise(etree)
            root_node = _rootNodeOrRaise(etree)
            c_doc = _copyDocRoot(doc._c_doc, root_node._c_node)
            self._doc = _documentFactory(c_doc, doc._parser)
            parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(c_doc)
        elif file is not None:
            file = _getFSPathOrObject(file)
            if _isString(file):
                filename = _encodeFilename(file)
                parser_ctxt = xmlschema.xmlSchemaNewParserCtxt(_cstr(filename))
            else:
                self._doc = _parseDocument(file, None, None)
                parser_ctxt = xmlschema.xmlSchemaNewDocParserCtxt(self._doc._c_doc)
        else:
            raise XMLSchemaParseError, u"No tree or file given"

        if parser_ctxt is NULL:
            raise MemoryError()

        xmlschema.xmlSchemaSetParserStructuredErrors(
            parser_ctxt, _receiveError, <void*>self._error_log)
        if self._doc is not None:
            # calling xmlSchemaParse on a schema with imports or
            # includes will cause libxml2 to create an internal
            # context for parsing, so push an implied context to route
            # resolve requests to the document's parser
            __GLOBAL_PARSER_CONTEXT.pushImpliedContextFromParser(self._doc._parser)
        with nogil:
            orig_loader = _register_document_loader()
            self._c_schema = xmlschema.xmlSchemaParse(parser_ctxt)
            _reset_document_loader(orig_loader)
        if self._doc is not None:
            __GLOBAL_PARSER_CONTEXT.popImpliedContext()
        xmlschema.xmlSchemaFreeParserCtxt(parser_ctxt)

        if self._c_schema is NULL:
            raise XMLSchemaParseError(
                self._error_log._buildExceptionMessage(
                    u"Document is not valid XML Schema"),
                self._error_log)

        if self._doc is not None:
            self._has_default_attributes = _check_for_default_attributes(self._doc)
        self._add_attribute_defaults = attribute_defaults and self._has_default_attributes

    def __dealloc__(self):
        xmlschema.xmlSchemaFree(self._c_schema)

    def __call__(self, etree):
        u"""__call__(self, etree)

        Validate doc using XML Schema.

        Returns true if document is valid, false if not.
        """
        cdef xmlschema.xmlSchemaValidCtxt* valid_ctxt
        cdef _Document doc
        cdef _Element root_node
        cdef xmlDoc* c_doc
        cdef int ret

        assert self._c_schema is not NULL, "Schema instance not initialised"
        doc = _documentOrRaise(etree)
        root_node = _rootNodeOrRaise(etree)

        valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(self._c_schema)
        if valid_ctxt is NULL:
            raise MemoryError()

        try:
            if self._add_attribute_defaults:
                xmlschema.xmlSchemaSetValidOptions(
                    valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)

            self._error_log.clear()
            xmlschema.xmlSchemaSetValidStructuredErrors(
                valid_ctxt, _receiveError, <void*>self._error_log)

            c_doc = _fakeRootDoc(doc._c_doc, root_node._c_node)
            with nogil:
                ret = xmlschema.xmlSchemaValidateDoc(valid_ctxt, c_doc)
            _destroyFakeDoc(doc._c_doc, c_doc)
        finally:
            xmlschema.xmlSchemaFreeValidCtxt(valid_ctxt)

        if ret == -1:
            raise XMLSchemaValidateError(
                u"Internal error in XML Schema validation.",
                self._error_log)
        if ret == 0:
            return True
        else:
            return False

    cdef _ParserSchemaValidationContext _newSaxValidator(
            self, bint add_default_attributes):
        cdef _ParserSchemaValidationContext context
        context = _ParserSchemaValidationContext.__new__(_ParserSchemaValidationContext)
        context._schema = self
        context._add_default_attributes = (self._has_default_attributes and (
            add_default_attributes or self._add_attribute_defaults))
        return context

@cython.final
@cython.internal
cdef class _ParserSchemaValidationContext:
    cdef XMLSchema _schema
    cdef xmlschema.xmlSchemaValidCtxt* _valid_ctxt
    cdef xmlschema.xmlSchemaSAXPlugStruct* _sax_plug
    cdef bint _add_default_attributes
    def __cinit__(self):
        self._valid_ctxt = NULL
        self._sax_plug = NULL
        self._add_default_attributes = False

    def __dealloc__(self):
        self.disconnect()
        if self._valid_ctxt:
            xmlschema.xmlSchemaFreeValidCtxt(self._valid_ctxt)

    cdef _ParserSchemaValidationContext copy(self):
        assert self._schema is not None, "_ParserSchemaValidationContext not initialised"
        return self._schema._newSaxValidator(
            self._add_default_attributes)

    cdef void inject_default_attributes(self, xmlDoc* c_doc):
        # we currently need to insert default attributes manually
        # after parsing, as libxml2 does not support this at parse
        # time
        if self._add_default_attributes:
            with nogil:
                xmlschema.xmlSchemaValidateDoc(self._valid_ctxt, c_doc)

    cdef int connect(self, xmlparser.xmlParserCtxt* c_ctxt, _BaseErrorLog error_log) except -1:
        if self._valid_ctxt is NULL:
            self._valid_ctxt = xmlschema.xmlSchemaNewValidCtxt(
                self._schema._c_schema)
            if self._valid_ctxt is NULL:
                raise MemoryError()
            if self._add_default_attributes:
                xmlschema.xmlSchemaSetValidOptions(
                    self._valid_ctxt, xmlschema.XML_SCHEMA_VAL_VC_I_CREATE)
        if error_log is not None:
            xmlschema.xmlSchemaSetValidStructuredErrors(
                self._valid_ctxt, _receiveError, <void*>error_log)
        self._sax_plug = xmlschema.xmlSchemaSAXPlug(
            self._valid_ctxt, &c_ctxt.sax, &c_ctxt.userData)

    cdef void disconnect(self):
        if self._sax_plug is not NULL:
            xmlschema.xmlSchemaSAXUnplug(self._sax_plug)
            self._sax_plug = NULL
        if self._valid_ctxt is not NULL:
            xmlschema.xmlSchemaSetValidStructuredErrors(
                self._valid_ctxt, NULL, NULL)

    cdef bint isvalid(self):
        if self._valid_ctxt is NULL:
            return 1 # valid
        return xmlschema.xmlSchemaIsValid(self._valid_ctxt)

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
June 25 2025 08:31:36
root / root
0755
__pycache__
--
May 15 2025 08:30:35
root / root
0755
html
--
May 15 2025 08:30:33
root / root
0755
includes
--
May 15 2025 08:30:33
root / root
0755
isoschematron
--
May 15 2025 08:30:33
root / root
0755
ElementInclude.py
8.359 KB
April 17 2025 13:10:58
root / root
0644
__init__.py
0.562 KB
April 17 2025 13:10:58
root / root
0644
_elementpath.cpython-311-x86_64-linux-gnu.so
225.273 KB
April 17 2025 13:11:30
root / root
0755
_elementpath.py
10.49 KB
April 17 2025 13:10:58
root / root
0644
apihelpers.pxi
62.941 KB
April 17 2025 13:10:58
root / root
0644
builder.cpython-311-x86_64-linux-gnu.so
120.727 KB
April 17 2025 13:11:30
root / root
0755
builder.py
7.956 KB
April 17 2025 13:10:58
root / root
0644
classlookup.pxi
21.936 KB
April 17 2025 13:10:58
root / root
0644
cleanup.pxi
8.26 KB
April 17 2025 13:10:58
root / root
0644
cssselect.py
3.287 KB
April 17 2025 13:10:58
root / root
0644
debug.pxi
3.206 KB
April 17 2025 13:10:58
root / root
0644
docloader.pxi
5.647 KB
April 17 2025 13:10:58
root / root
0644
doctestcompare.py
17.909 KB
April 17 2025 13:10:58
root / root
0644
dtd.pxi
14.862 KB
April 17 2025 13:10:58
root / root
0644
etree.cpython-311-x86_64-linux-gnu.so
5.53 MB
April 17 2025 13:11:30
root / root
0755
etree.h
8.374 KB
April 17 2025 13:10:58
root / root
0644
etree.pyx
129.312 KB
April 17 2025 13:10:58
root / root
0644
etree_api.h
17.058 KB
April 17 2025 13:10:58
root / root
0644
extensions.pxi
32.462 KB
April 17 2025 13:10:58
root / root
0644
iterparse.pxi
16.218 KB
April 17 2025 13:10:58
root / root
0644
lxml.etree.h
8.374 KB
April 17 2025 13:10:58
root / root
0644
lxml.etree_api.h
17.063 KB
April 17 2025 13:10:58
root / root
0644
nsclasses.pxi
8.931 KB
April 17 2025 13:10:58
root / root
0644
objectify.cpython-311-x86_64-linux-gnu.so
3.2 MB
April 17 2025 13:11:30
root / root
0755
objectify.pyx
75.293 KB
April 17 2025 13:10:58
root / root
0644
objectpath.pxi
11.21 KB
April 17 2025 13:10:58
root / root
0644
parser.pxi
76.413 KB
April 17 2025 13:10:58
root / root
0644
parsertarget.pxi
6.698 KB
April 17 2025 13:10:58
root / root
0644
proxy.pxi
23.01 KB
April 17 2025 13:10:58
root / root
0644
public-api.pxi
6.504 KB
April 17 2025 13:10:58
root / root
0644
pyclasslookup.py
0.09 KB
April 17 2025 13:10:58
root / root
0644
readonlytree.pxi
18.602 KB
April 17 2025 13:10:58
root / root
0644
relaxng.pxi
5.942 KB
April 17 2025 13:10:58
root / root
0644
sax.cpython-311-x86_64-linux-gnu.so
196.953 KB
April 17 2025 13:11:30
root / root
0755
sax.py
9.176 KB
April 17 2025 13:10:58
root / root
0644
saxparser.pxi
31.779 KB
April 17 2025 13:10:58
root / root
0644
schematron.pxi
5.646 KB
April 17 2025 13:10:58
root / root
0644
serializer.pxi
66.405 KB
April 17 2025 13:10:58
root / root
0644
usedoctest.py
0.225 KB
April 17 2025 13:10:58
root / root
0644
xinclude.pxi
2.402 KB
April 17 2025 13:10:58
root / root
0644
xmlerror.pxi
48.37 KB
April 17 2025 13:10:58
root / root
0644
xmlid.pxi
5.922 KB
April 17 2025 13:10:58
root / root
0644
xmlschema.pxi
7.89 KB
April 17 2025 13:10:58
root / root
0644
xpath.pxi
19.112 KB
April 17 2025 13:10:58
root / root
0644
xslt.pxi
35.834 KB
April 17 2025 13:10:58
root / root
0644
xsltext.pxi
10.825 KB
April 17 2025 13:10:58
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF