Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

1655 rader
49 KiB

  1. # DEBUG and error logging
  2. from lxml.includes cimport xmlerror
  3. from lxml cimport cvarargs
  4. DEF GLOBAL_ERROR_LOG = "_GlobalErrorLog"
  5. DEF XSLT_ERROR_LOG = "_XSLTErrorLog"
  6. # module level API functions
  7. def clear_error_log():
  8. """clear_error_log()
  9. Clear the global error log. Note that this log is already bound to a
  10. fixed size.
  11. Note: since lxml 2.2, the global error log is local to a thread
  12. and this function will only clear the global error log of the
  13. current thread.
  14. """
  15. _getThreadErrorLog(GLOBAL_ERROR_LOG).clear()
  16. # setup for global log:
  17. cdef void _initThreadLogging() noexcept:
  18. # Disable generic error lines from libxml2.
  19. _connectGenericErrorLog(None)
  20. # Divert XSLT error messages to the global XSLT error log instead of stderr.
  21. xslt.xsltSetGenericErrorFunc(NULL, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
  22. # Logging classes
  23. @cython.final
  24. @cython.freelist(16)
  25. cdef class _LogEntry:
  26. """A log message entry from an error log.
  27. Attributes:
  28. - message: the message text
  29. - domain: the domain ID (see lxml.etree.ErrorDomains)
  30. - type: the message type ID (see lxml.etree.ErrorTypes)
  31. - level: the log level ID (see lxml.etree.ErrorLevels)
  32. - line: the line at which the message originated (if applicable)
  33. - column: the character column at which the message originated (if applicable)
  34. - filename: the name of the file in which the message originated (if applicable)
  35. - path: the location in which the error was found (if available)
  36. """
  37. cdef readonly int domain
  38. cdef readonly int type
  39. cdef readonly int level
  40. cdef readonly long line
  41. cdef readonly int column
  42. cdef basestring _message
  43. cdef basestring _filename
  44. cdef char* _c_message
  45. cdef xmlChar* _c_filename
  46. cdef xmlChar* _c_path
  47. def __dealloc__(self):
  48. tree.xmlFree(self._c_message)
  49. tree.xmlFree(self._c_filename)
  50. tree.xmlFree(self._c_path)
  51. @cython.final
  52. cdef int _setError(self, const xmlerror.xmlError* error) except -1:
  53. self.domain = error.domain
  54. self.type = error.code
  55. self.level = <int>error.level
  56. self.line = <long>error.line
  57. self.column = error.int2
  58. self._c_message = NULL
  59. self._c_filename = NULL
  60. self._c_path = NULL
  61. if (error.message is NULL or
  62. error.message[0] == b'\0' or
  63. error.message[0] == b'\n' and error.message[1] == b'\0'):
  64. self._message = "unknown error"
  65. else:
  66. self._message = None
  67. self._c_message = <char*> tree.xmlStrdup(
  68. <const_xmlChar*> error.message)
  69. if not self._c_message:
  70. raise MemoryError()
  71. if error.file is NULL:
  72. self._filename = '<string>'
  73. else:
  74. self._filename = None
  75. self._c_filename = tree.xmlStrdup(<const_xmlChar*> error.file)
  76. if not self._c_filename:
  77. raise MemoryError()
  78. if error.node is not NULL:
  79. self._c_path = tree.xmlGetNodePath(<xmlNode*> error.node)
  80. c_line = tree.xmlGetLineNo(<xmlNode*> error.node)
  81. if c_line > limits.INT_MAX:
  82. self.line = c_line
  83. @cython.final
  84. cdef _setGeneric(self, int domain, int type, int level, long line,
  85. message, filename):
  86. self.domain = domain
  87. self.type = type
  88. self.level = level
  89. self.line = line
  90. self.column = 0
  91. self._message = message
  92. self._filename = filename
  93. self._c_path = NULL
  94. def __repr__(self):
  95. return "%s:%d:%d:%s:%s:%s: %s" % (
  96. self.filename, self.line, self.column, self.level_name,
  97. self.domain_name, self.type_name, self.message)
  98. @property
  99. def domain_name(self):
  100. """The name of the error domain. See lxml.etree.ErrorDomains
  101. """
  102. return ErrorDomains._getName(self.domain, "unknown")
  103. @property
  104. def type_name(self):
  105. """The name of the error type. See lxml.etree.ErrorTypes
  106. """
  107. if self.domain == ErrorDomains.RELAXNGV:
  108. getName = RelaxNGErrorTypes._getName
  109. else:
  110. getName = ErrorTypes._getName
  111. return getName(self.type, "unknown")
  112. @property
  113. def level_name(self):
  114. """The name of the error level. See lxml.etree.ErrorLevels
  115. """
  116. return ErrorLevels._getName(self.level, "unknown")
  117. @property
  118. def message(self):
  119. """The log message string.
  120. """
  121. cdef size_t size
  122. if self._message is not None:
  123. return self._message
  124. if self._c_message is NULL:
  125. return None
  126. size = cstring_h.strlen(self._c_message)
  127. if size > 0 and self._c_message[size-1] == b'\n':
  128. size -= 1 # strip EOL
  129. # cannot use funicode() here because the message may contain
  130. # byte encoded file paths etc.
  131. try:
  132. self._message = self._c_message[:size].decode('utf8')
  133. except UnicodeDecodeError:
  134. try:
  135. self._message = self._c_message[:size].decode(
  136. 'ascii', 'backslashreplace')
  137. except UnicodeDecodeError:
  138. self._message = '<undecodable error message>'
  139. if self._c_message:
  140. # clean up early
  141. tree.xmlFree(self._c_message)
  142. self._c_message = NULL
  143. return self._message
  144. @property
  145. def filename(self):
  146. """The file path where the report originated, if any.
  147. """
  148. if self._filename is None:
  149. if self._c_filename is not NULL:
  150. self._filename = _decodeFilename(self._c_filename)
  151. # clean up early
  152. tree.xmlFree(self._c_filename)
  153. self._c_filename = NULL
  154. return self._filename
  155. @property
  156. def path(self):
  157. """The XPath for the node where the error was detected.
  158. """
  159. return funicode(self._c_path) if self._c_path is not NULL else None
  160. cdef class _BaseErrorLog:
  161. cdef _LogEntry _first_error
  162. cdef readonly object last_error
  163. def __init__(self, first_error, last_error):
  164. self._first_error = first_error
  165. self.last_error = last_error
  166. cpdef copy(self):
  167. return _BaseErrorLog(self._first_error, self.last_error)
  168. def __repr__(self):
  169. return ''
  170. cpdef receive(self, _LogEntry entry):
  171. pass
  172. @cython.final
  173. cdef int _receive(self, const xmlerror.xmlError* error) except -1:
  174. cdef bint is_error
  175. cdef _LogEntry entry
  176. cdef _BaseErrorLog global_log
  177. entry = _LogEntry.__new__(_LogEntry)
  178. entry._setError(error)
  179. is_error = error.level == xmlerror.XML_ERR_ERROR or \
  180. error.level == xmlerror.XML_ERR_FATAL
  181. global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  182. if global_log is not self:
  183. global_log.receive(entry)
  184. if is_error:
  185. global_log.last_error = entry
  186. self.receive(entry)
  187. if is_error:
  188. self.last_error = entry
  189. @cython.final
  190. cdef int _receiveGeneric(self, int domain, int type, int level, long line,
  191. message, filename) except -1:
  192. cdef bint is_error
  193. cdef _LogEntry entry
  194. cdef _BaseErrorLog global_log
  195. entry = _LogEntry.__new__(_LogEntry)
  196. entry._setGeneric(domain, type, level, line, message, filename)
  197. is_error = level == xmlerror.XML_ERR_ERROR or \
  198. level == xmlerror.XML_ERR_FATAL
  199. global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  200. if global_log is not self:
  201. global_log.receive(entry)
  202. if is_error:
  203. global_log.last_error = entry
  204. self.receive(entry)
  205. if is_error:
  206. self.last_error = entry
  207. @cython.final
  208. cdef _buildParseException(self, exctype, default_message):
  209. code = xmlerror.XML_ERR_INTERNAL_ERROR
  210. if self._first_error is None:
  211. return exctype(default_message, code, 0, 0)
  212. message = self._first_error.message
  213. if message:
  214. code = self._first_error.type
  215. else:
  216. message = default_message
  217. line = self._first_error.line
  218. column = self._first_error.column
  219. filename = self._first_error.filename
  220. if line > 0:
  221. if column > 0:
  222. message = f"{message}, line {line}, column {column}"
  223. else:
  224. message = f"{message}, line {line}"
  225. return exctype(message, code, line, column, filename)
  226. @cython.final
  227. cdef _buildExceptionMessage(self, default_message):
  228. if self._first_error is None:
  229. return default_message
  230. if self._first_error.message:
  231. message = self._first_error.message
  232. elif default_message is None:
  233. return None
  234. else:
  235. message = default_message
  236. if self._first_error.line > 0:
  237. if self._first_error.column > 0:
  238. message = f"{message}, line {self._first_error.line}, column {self._first_error.column}"
  239. else:
  240. message = f"{message}, line {self._first_error.line}"
  241. return message
  242. cdef class _ListErrorLog(_BaseErrorLog):
  243. "Immutable base version of a list based error log."
  244. cdef list _entries
  245. cdef int _offset
  246. def __init__(self, entries, first_error, last_error):
  247. if entries:
  248. if first_error is None:
  249. first_error = entries[0]
  250. if last_error is None:
  251. last_error = entries[-1]
  252. _BaseErrorLog.__init__(self, first_error, last_error)
  253. self._entries = entries
  254. cpdef copy(self):
  255. """Creates a shallow copy of this error log. Reuses the list of
  256. entries.
  257. """
  258. cdef _ListErrorLog log = _ListErrorLog(
  259. self._entries, self._first_error, self.last_error)
  260. log._offset = self._offset
  261. return log
  262. def __iter__(self):
  263. entries = self._entries
  264. if self._offset:
  265. entries = islice(entries, self._offset)
  266. return iter(entries)
  267. def __repr__(self):
  268. return '\n'.join([repr(entry) for entry in self])
  269. def __getitem__(self, index):
  270. if self._offset:
  271. index += self._offset
  272. return self._entries[index]
  273. def __len__(self):
  274. return len(self._entries) - self._offset
  275. def __contains__(self, error_type):
  276. cdef Py_ssize_t i
  277. for i, entry in enumerate(self._entries):
  278. if i < self._offset:
  279. continue
  280. if entry.type == error_type:
  281. return True
  282. return False
  283. def __bool__(self):
  284. return len(self._entries) > self._offset
  285. def filter_domains(self, domains):
  286. """Filter the errors by the given domains and return a new error log
  287. containing the matches.
  288. """
  289. cdef _LogEntry entry
  290. if isinstance(domains, int):
  291. domains = (domains,)
  292. filtered = [entry for entry in self if entry.domain in domains]
  293. return _ListErrorLog(filtered, None, None)
  294. def filter_types(self, types):
  295. """filter_types(self, types)
  296. Filter the errors by the given types and return a new error
  297. log containing the matches.
  298. """
  299. cdef _LogEntry entry
  300. if isinstance(types, int):
  301. types = (types,)
  302. filtered = [entry for entry in self if entry.type in types]
  303. return _ListErrorLog(filtered, None, None)
  304. def filter_levels(self, levels):
  305. """filter_levels(self, levels)
  306. Filter the errors by the given error levels and return a new
  307. error log containing the matches.
  308. """
  309. cdef _LogEntry entry
  310. if isinstance(levels, int):
  311. levels = (levels,)
  312. filtered = [entry for entry in self if entry.level in levels]
  313. return _ListErrorLog(filtered, None, None)
  314. def filter_from_level(self, level):
  315. """filter_from_level(self, level)
  316. Return a log with all messages of the requested level of worse.
  317. """
  318. cdef _LogEntry entry
  319. filtered = [entry for entry in self if entry.level >= level]
  320. return _ListErrorLog(filtered, None, None)
  321. def filter_from_fatals(self):
  322. """filter_from_fatals(self)
  323. Convenience method to get all fatal error messages.
  324. """
  325. return self.filter_from_level(ErrorLevels.FATAL)
  326. def filter_from_errors(self):
  327. """filter_from_errors(self)
  328. Convenience method to get all error messages or worse.
  329. """
  330. return self.filter_from_level(ErrorLevels.ERROR)
  331. def filter_from_warnings(self):
  332. """filter_from_warnings(self)
  333. Convenience method to get all warnings or worse.
  334. """
  335. return self.filter_from_level(ErrorLevels.WARNING)
  336. @cython.final
  337. @cython.internal
  338. cdef class _ErrorLogContext:
  339. """
  340. Error log context for the 'with' statement.
  341. Stores a reference to the current callbacks to allow for
  342. recursively stacked log contexts.
  343. """
  344. cdef xmlerror.xmlStructuredErrorFunc old_error_func
  345. cdef void* old_error_context
  346. cdef xmlerror.xmlGenericErrorFunc old_xslt_error_func
  347. cdef void* old_xslt_error_context
  348. cdef _BaseErrorLog old_xslt_error_log
  349. cdef int push_error_log(self, _BaseErrorLog log) except -1:
  350. self.old_error_func = xmlerror.xmlStructuredError
  351. self.old_error_context = xmlerror.xmlStructuredErrorContext
  352. xmlerror.xmlSetStructuredErrorFunc(
  353. <void*>log, <xmlerror.xmlStructuredErrorFunc>_receiveError)
  354. # xslt.xsltSetGenericErrorFunc() is not thread-local => keep error log in TLS
  355. self.old_xslt_error_func = xslt.xsltGenericError
  356. self.old_xslt_error_context = xslt.xsltGenericErrorContext
  357. self.old_xslt_error_log = _getThreadErrorLog(XSLT_ERROR_LOG)
  358. _setThreadErrorLog(XSLT_ERROR_LOG, log)
  359. xslt.xsltSetGenericErrorFunc(
  360. NULL, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
  361. return 0
  362. cdef int pop_error_log(self) except -1:
  363. xmlerror.xmlSetStructuredErrorFunc(
  364. self.old_error_context, self.old_error_func)
  365. xslt.xsltSetGenericErrorFunc(
  366. self.old_xslt_error_context, self.old_xslt_error_func)
  367. _setThreadErrorLog(XSLT_ERROR_LOG, self.old_xslt_error_log)
  368. self.old_xslt_error_log= None
  369. return 0
  370. cdef class _ErrorLog(_ListErrorLog):
  371. cdef list _logContexts
  372. def __cinit__(self):
  373. self._logContexts = []
  374. def __init__(self):
  375. _ListErrorLog.__init__(self, [], None, None)
  376. @cython.final
  377. cdef int __enter__(self) except -1:
  378. return self.connect()
  379. def __exit__(self, *args):
  380. # TODO: make this a cdef function when Cython supports it
  381. self.disconnect()
  382. @cython.final
  383. cdef int connect(self) except -1:
  384. self._first_error = None
  385. del self._entries[:]
  386. cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)
  387. context.push_error_log(self)
  388. self._logContexts.append(context)
  389. return 0
  390. @cython.final
  391. cdef int disconnect(self) except -1:
  392. cdef _ErrorLogContext context = self._logContexts.pop()
  393. context.pop_error_log()
  394. return 0
  395. cpdef clear(self):
  396. self._first_error = None
  397. self.last_error = None
  398. self._offset = 0
  399. del self._entries[:]
  400. cpdef copy(self):
  401. """Creates a shallow copy of this error log and the list of entries.
  402. """
  403. return _ListErrorLog(
  404. self._entries[self._offset:],
  405. self._first_error, self.last_error)
  406. def __iter__(self):
  407. return iter(self._entries[self._offset:])
  408. cpdef receive(self, _LogEntry entry):
  409. if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  410. self._first_error = entry
  411. self._entries.append(entry)
  412. cdef class _DomainErrorLog(_ErrorLog):
  413. def __init__(self, domains):
  414. _ErrorLog.__init__(self)
  415. self._accepted_domains = tuple(domains)
  416. cpdef receive(self, _LogEntry entry):
  417. if entry.domain in self._accepted_domains:
  418. _ErrorLog.receive(self, entry)
  419. cdef class _RotatingErrorLog(_ErrorLog):
  420. cdef int _max_len
  421. def __init__(self, max_len):
  422. _ErrorLog.__init__(self)
  423. self._max_len = max_len
  424. cpdef receive(self, _LogEntry entry):
  425. if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  426. self._first_error = entry
  427. self._entries.append(entry)
  428. if len(self._entries) > self._max_len:
  429. self._offset += 1
  430. if self._offset > self._max_len // 3:
  431. offset = self._offset
  432. self._offset = 0
  433. del self._entries[:offset]
  434. cdef class PyErrorLog(_BaseErrorLog):
  435. """PyErrorLog(self, logger_name=None, logger=None)
  436. A global error log that connects to the Python stdlib logging package.
  437. The constructor accepts an optional logger name or a readily
  438. instantiated logger instance.
  439. If you want to change the mapping between libxml2's ErrorLevels and Python
  440. logging levels, you can modify the level_map dictionary from a subclass.
  441. The default mapping is::
  442. ErrorLevels.WARNING = logging.WARNING
  443. ErrorLevels.ERROR = logging.ERROR
  444. ErrorLevels.FATAL = logging.CRITICAL
  445. You can also override the method ``receive()`` that takes a LogEntry
  446. object and calls ``self.log(log_entry, format_string, arg1, arg2, ...)``
  447. with appropriate data.
  448. """
  449. cdef readonly dict level_map
  450. cdef object _map_level
  451. cdef object _log
  452. def __init__(self, logger_name=None, logger=None):
  453. _BaseErrorLog.__init__(self, None, None)
  454. import logging
  455. self.level_map = {
  456. ErrorLevels.WARNING : logging.WARNING,
  457. ErrorLevels.ERROR : logging.ERROR,
  458. ErrorLevels.FATAL : logging.CRITICAL
  459. }
  460. self._map_level = self.level_map.get
  461. if logger is None:
  462. if logger_name:
  463. logger = logging.getLogger(logger_name)
  464. else:
  465. logger = logging.getLogger()
  466. self._log = logger.log
  467. cpdef copy(self):
  468. """Dummy method that returns an empty error log.
  469. """
  470. return _ListErrorLog([], None, None)
  471. def log(self, log_entry, message, *args):
  472. """log(self, log_entry, message, *args)
  473. Called by the .receive() method to log a _LogEntry instance to
  474. the Python logging system. This handles the error level
  475. mapping.
  476. In the default implementation, the ``message`` argument
  477. receives a complete log line, and there are no further
  478. ``args``. To change the message format, it is best to
  479. override the .receive() method instead of this one.
  480. """
  481. self._log(
  482. self._map_level(log_entry.level, 0),
  483. message, *args
  484. )
  485. cpdef receive(self, _LogEntry log_entry):
  486. """receive(self, log_entry)
  487. Receive a _LogEntry instance from the logging system. Calls
  488. the .log() method with appropriate parameters::
  489. self.log(log_entry, repr(log_entry))
  490. You can override this method to provide your own log output
  491. format.
  492. """
  493. self.log(log_entry, repr(log_entry))
  494. # thread-local, global list log to collect error output messages from
  495. # libxml2/libxslt
  496. cdef _BaseErrorLog __GLOBAL_ERROR_LOG = _RotatingErrorLog(__MAX_LOG_SIZE)
  497. cdef _BaseErrorLog _getThreadErrorLog(name):
  498. """Retrieve the current error log with name 'name' of this thread."""
  499. cdef python.PyObject* thread_dict
  500. thread_dict = python.PyThreadState_GetDict()
  501. if thread_dict is NULL:
  502. return __GLOBAL_ERROR_LOG
  503. try:
  504. return (<object>thread_dict)[name]
  505. except KeyError:
  506. log = (<object>thread_dict)[name] = \
  507. _RotatingErrorLog(__MAX_LOG_SIZE)
  508. return log
  509. cdef _setThreadErrorLog(name, _BaseErrorLog log):
  510. """Set the global error log of this thread."""
  511. cdef python.PyObject* thread_dict
  512. thread_dict = python.PyThreadState_GetDict()
  513. if thread_dict is NULL:
  514. if name == GLOBAL_ERROR_LOG:
  515. global __GLOBAL_ERROR_LOG
  516. __GLOBAL_ERROR_LOG = log
  517. else:
  518. (<object>thread_dict)[name] = log
  519. cdef __copyGlobalErrorLog():
  520. "Helper function for properties in exceptions."
  521. return _getThreadErrorLog(GLOBAL_ERROR_LOG).copy()
  522. def use_global_python_log(PyErrorLog log not None):
  523. """use_global_python_log(log)
  524. Replace the global error log by an etree.PyErrorLog that uses the
  525. standard Python logging package.
  526. Note that this disables access to the global error log from exceptions.
  527. Parsers, XSLT etc. will continue to provide their normal local error log.
  528. Note: prior to lxml 2.2, this changed the error log globally.
  529. Since lxml 2.2, the global error log is local to a thread and this
  530. function will only set the global error log of the current thread.
  531. """
  532. _setThreadErrorLog(GLOBAL_ERROR_LOG, log)
  533. # local log functions: forward error to logger object
  534. cdef void _forwardError(void* c_log_handler, const xmlerror.xmlError* error) noexcept with gil:
  535. cdef _BaseErrorLog log_handler
  536. if c_log_handler is not NULL:
  537. log_handler = <_BaseErrorLog>c_log_handler
  538. elif error.domain == xmlerror.XML_FROM_XSLT:
  539. log_handler = _getThreadErrorLog(XSLT_ERROR_LOG)
  540. else:
  541. log_handler = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  542. log_handler._receive(error)
  543. cdef void _receiveError(void* c_log_handler, const xmlerror.xmlError* error) noexcept nogil:
  544. # no Python objects here, may be called without thread context !
  545. if __DEBUG:
  546. _forwardError(c_log_handler, error)
  547. cdef void _receiveXSLTError(void* c_log_handler, char* msg, ...) noexcept nogil:
  548. # no Python objects here, may be called without thread context !
  549. cdef cvarargs.va_list args
  550. cvarargs.va_start(args, msg)
  551. _receiveGenericError(c_log_handler, xmlerror.XML_FROM_XSLT, msg, args)
  552. cvarargs.va_end(args)
  553. cdef void _receiveRelaxNGParseError(void* c_log_handler, char* msg, ...) noexcept nogil:
  554. # no Python objects here, may be called without thread context !
  555. cdef cvarargs.va_list args
  556. cvarargs.va_start(args, msg)
  557. _receiveGenericError(c_log_handler, xmlerror.XML_FROM_RELAXNGP, msg, args)
  558. cvarargs.va_end(args)
  559. cdef void _receiveRelaxNGValidationError(void* c_log_handler, char* msg, ...) noexcept nogil:
  560. # no Python objects here, may be called without thread context !
  561. cdef cvarargs.va_list args
  562. cvarargs.va_start(args, msg)
  563. _receiveGenericError(c_log_handler, xmlerror.XML_FROM_RELAXNGV, msg, args)
  564. cvarargs.va_end(args)
  565. # dummy function: no log output at all
  566. cdef void _nullGenericErrorFunc(void* ctxt, char* msg, ...) noexcept nogil:
  567. pass
  568. cdef void _connectGenericErrorLog(log, int c_domain=-1) noexcept:
  569. cdef xmlerror.xmlGenericErrorFunc error_func = NULL
  570. c_log = <void*>log
  571. if c_domain == xmlerror.XML_FROM_XSLT:
  572. error_func = <xmlerror.xmlGenericErrorFunc>_receiveXSLTError
  573. elif c_domain == xmlerror.XML_FROM_RELAXNGP:
  574. error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGParseError
  575. elif c_domain == xmlerror.XML_FROM_RELAXNGV:
  576. error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGValidationError
  577. if log is None or error_func is NULL:
  578. c_log = NULL
  579. error_func = <xmlerror.xmlGenericErrorFunc>_nullGenericErrorFunc
  580. xmlerror.xmlSetGenericErrorFunc(c_log, error_func)
  581. cdef void _receiveGenericError(void* c_log_handler, int c_domain,
  582. char* msg, cvarargs.va_list args) noexcept nogil:
  583. # no Python objects here, may be called without thread context !
  584. cdef xmlerror.xmlError c_error
  585. cdef char* c_text
  586. cdef char* c_message
  587. cdef char* c_element
  588. cdef char* c_pos
  589. cdef char* c_name_pos
  590. cdef char* c_str
  591. cdef int text_size, element_size, format_count, c_int
  592. if not __DEBUG or msg is NULL:
  593. return
  594. if msg[0] in b'\n\0':
  595. return
  596. c_text = c_element = c_error.file = c_error.node = NULL
  597. c_error.line = 0
  598. # parse "NAME %s" chunks from the format string
  599. c_name_pos = c_pos = msg
  600. format_count = 0
  601. while c_pos[0]:
  602. if c_pos[0] == b'%':
  603. c_pos += 1
  604. if c_pos[0] == b's': # "%s"
  605. format_count += 1
  606. c_str = cvarargs.va_charptr(args)
  607. if c_pos == msg + 1:
  608. c_text = c_str # msg == "%s..."
  609. elif c_name_pos[0] == b'e':
  610. if cstring_h.strncmp(c_name_pos, 'element %s', 10) == 0:
  611. c_element = c_str
  612. elif c_name_pos[0] == b'f':
  613. if cstring_h.strncmp(c_name_pos, 'file %s', 7) == 0:
  614. if cstring_h.strncmp('string://__STRING__XSLT',
  615. c_str, 23) == 0:
  616. c_str = '<xslt>'
  617. c_error.file = c_str
  618. elif c_pos[0] == b'd': # "%d"
  619. format_count += 1
  620. c_int = cvarargs.va_int(args)
  621. if cstring_h.strncmp(c_name_pos, 'line %d', 7) == 0:
  622. c_error.line = c_int
  623. elif c_pos[0] != b'%': # "%%" == "%"
  624. format_count += 1
  625. break # unexpected format or end of string => abort
  626. elif c_pos[0] == b' ':
  627. if c_pos[1] != b'%':
  628. c_name_pos = c_pos + 1
  629. c_pos += 1
  630. c_message = NULL
  631. if c_text is NULL:
  632. if c_element is not NULL and format_count == 1:
  633. # special case: a single occurrence of 'element %s'
  634. text_size = cstring_h.strlen(msg)
  635. element_size = cstring_h.strlen(c_element)
  636. c_message = <char*>stdlib.malloc(
  637. (text_size + element_size + 1) * sizeof(char))
  638. stdio.sprintf(c_message, msg, c_element)
  639. c_error.message = c_message
  640. else:
  641. c_error.message = ''
  642. elif c_element is NULL:
  643. c_error.message = c_text
  644. else:
  645. text_size = cstring_h.strlen(c_text)
  646. element_size = cstring_h.strlen(c_element)
  647. c_message = <char*>stdlib.malloc(
  648. (text_size + 12 + element_size + 1) * sizeof(char))
  649. if c_message is NULL:
  650. c_error.message = c_text
  651. else:
  652. stdio.sprintf(c_message, "%s, element '%s'", c_text, c_element)
  653. c_error.message = c_message
  654. c_error.domain = c_domain
  655. c_error.code = xmlerror.XML_ERR_OK # what else?
  656. c_error.level = xmlerror.XML_ERR_ERROR # what else?
  657. c_error.int2 = 0
  658. _forwardError(c_log_handler, &c_error)
  659. if c_message is not NULL:
  660. stdlib.free(c_message)
  661. ################################################################################
  662. ## CONSTANTS FROM "xmlerror.h" (or rather libxml-xmlerror.html)
  663. ################################################################################
  664. cdef __initErrorConstants():
  665. "Called at setup time to parse the constants and build the classes below."
  666. global __ERROR_LEVELS, __ERROR_DOMAINS, __PARSER_ERROR_TYPES, __RELAXNG_ERROR_TYPES
  667. const_defs = ((ErrorLevels, __ERROR_LEVELS),
  668. (ErrorDomains, __ERROR_DOMAINS),
  669. (ErrorTypes, __PARSER_ERROR_TYPES),
  670. (RelaxNGErrorTypes, __RELAXNG_ERROR_TYPES))
  671. for cls, constants in const_defs:
  672. reverse_dict = {}
  673. cls._names = reverse_dict
  674. cls._getName = reverse_dict.get
  675. for line in constants.splitlines():
  676. if not line:
  677. continue
  678. name, value = line.split('=')
  679. value = int(value)
  680. setattr(cls, name, value)
  681. reverse_dict[value] = name
  682. # discard the global string references after use
  683. __ERROR_LEVELS = __ERROR_DOMAINS = __PARSER_ERROR_TYPES = __RELAXNG_ERROR_TYPES = None
  684. class ErrorLevels(object):
  685. """Libxml2 error levels"""
  686. class ErrorDomains(object):
  687. """Libxml2 error domains"""
  688. class ErrorTypes(object):
  689. """Libxml2 error types"""
  690. class RelaxNGErrorTypes(object):
  691. """Libxml2 RelaxNG error types"""
  692. # --- BEGIN: GENERATED CONSTANTS ---
  693. # This section is generated by the script 'update-error-constants.py'.
  694. cdef object __ERROR_LEVELS = """\
  695. NONE=0
  696. WARNING=1
  697. ERROR=2
  698. FATAL=3
  699. """
  700. cdef object __ERROR_DOMAINS = """\
  701. NONE=0
  702. PARSER=1
  703. TREE=2
  704. NAMESPACE=3
  705. DTD=4
  706. HTML=5
  707. MEMORY=6
  708. OUTPUT=7
  709. IO=8
  710. FTP=9
  711. HTTP=10
  712. XINCLUDE=11
  713. XPATH=12
  714. XPOINTER=13
  715. REGEXP=14
  716. DATATYPE=15
  717. SCHEMASP=16
  718. SCHEMASV=17
  719. RELAXNGP=18
  720. RELAXNGV=19
  721. CATALOG=20
  722. C14N=21
  723. XSLT=22
  724. VALID=23
  725. CHECK=24
  726. WRITER=25
  727. MODULE=26
  728. I18N=27
  729. SCHEMATRONV=28
  730. BUFFER=29
  731. URI=30
  732. """
  733. cdef object __PARSER_ERROR_TYPES = """\
  734. ERR_OK=0
  735. ERR_INTERNAL_ERROR=1
  736. ERR_NO_MEMORY=2
  737. ERR_DOCUMENT_START=3
  738. ERR_DOCUMENT_EMPTY=4
  739. ERR_DOCUMENT_END=5
  740. ERR_INVALID_HEX_CHARREF=6
  741. ERR_INVALID_DEC_CHARREF=7
  742. ERR_INVALID_CHARREF=8
  743. ERR_INVALID_CHAR=9
  744. ERR_CHARREF_AT_EOF=10
  745. ERR_CHARREF_IN_PROLOG=11
  746. ERR_CHARREF_IN_EPILOG=12
  747. ERR_CHARREF_IN_DTD=13
  748. ERR_ENTITYREF_AT_EOF=14
  749. ERR_ENTITYREF_IN_PROLOG=15
  750. ERR_ENTITYREF_IN_EPILOG=16
  751. ERR_ENTITYREF_IN_DTD=17
  752. ERR_PEREF_AT_EOF=18
  753. ERR_PEREF_IN_PROLOG=19
  754. ERR_PEREF_IN_EPILOG=20
  755. ERR_PEREF_IN_INT_SUBSET=21
  756. ERR_ENTITYREF_NO_NAME=22
  757. ERR_ENTITYREF_SEMICOL_MISSING=23
  758. ERR_PEREF_NO_NAME=24
  759. ERR_PEREF_SEMICOL_MISSING=25
  760. ERR_UNDECLARED_ENTITY=26
  761. WAR_UNDECLARED_ENTITY=27
  762. ERR_UNPARSED_ENTITY=28
  763. ERR_ENTITY_IS_EXTERNAL=29
  764. ERR_ENTITY_IS_PARAMETER=30
  765. ERR_UNKNOWN_ENCODING=31
  766. ERR_UNSUPPORTED_ENCODING=32
  767. ERR_STRING_NOT_STARTED=33
  768. ERR_STRING_NOT_CLOSED=34
  769. ERR_NS_DECL_ERROR=35
  770. ERR_ENTITY_NOT_STARTED=36
  771. ERR_ENTITY_NOT_FINISHED=37
  772. ERR_LT_IN_ATTRIBUTE=38
  773. ERR_ATTRIBUTE_NOT_STARTED=39
  774. ERR_ATTRIBUTE_NOT_FINISHED=40
  775. ERR_ATTRIBUTE_WITHOUT_VALUE=41
  776. ERR_ATTRIBUTE_REDEFINED=42
  777. ERR_LITERAL_NOT_STARTED=43
  778. ERR_LITERAL_NOT_FINISHED=44
  779. ERR_COMMENT_NOT_FINISHED=45
  780. ERR_PI_NOT_STARTED=46
  781. ERR_PI_NOT_FINISHED=47
  782. ERR_NOTATION_NOT_STARTED=48
  783. ERR_NOTATION_NOT_FINISHED=49
  784. ERR_ATTLIST_NOT_STARTED=50
  785. ERR_ATTLIST_NOT_FINISHED=51
  786. ERR_MIXED_NOT_STARTED=52
  787. ERR_MIXED_NOT_FINISHED=53
  788. ERR_ELEMCONTENT_NOT_STARTED=54
  789. ERR_ELEMCONTENT_NOT_FINISHED=55
  790. ERR_XMLDECL_NOT_STARTED=56
  791. ERR_XMLDECL_NOT_FINISHED=57
  792. ERR_CONDSEC_NOT_STARTED=58
  793. ERR_CONDSEC_NOT_FINISHED=59
  794. ERR_EXT_SUBSET_NOT_FINISHED=60
  795. ERR_DOCTYPE_NOT_FINISHED=61
  796. ERR_MISPLACED_CDATA_END=62
  797. ERR_CDATA_NOT_FINISHED=63
  798. ERR_RESERVED_XML_NAME=64
  799. ERR_SPACE_REQUIRED=65
  800. ERR_SEPARATOR_REQUIRED=66
  801. ERR_NMTOKEN_REQUIRED=67
  802. ERR_NAME_REQUIRED=68
  803. ERR_PCDATA_REQUIRED=69
  804. ERR_URI_REQUIRED=70
  805. ERR_PUBID_REQUIRED=71
  806. ERR_LT_REQUIRED=72
  807. ERR_GT_REQUIRED=73
  808. ERR_LTSLASH_REQUIRED=74
  809. ERR_EQUAL_REQUIRED=75
  810. ERR_TAG_NAME_MISMATCH=76
  811. ERR_TAG_NOT_FINISHED=77
  812. ERR_STANDALONE_VALUE=78
  813. ERR_ENCODING_NAME=79
  814. ERR_HYPHEN_IN_COMMENT=80
  815. ERR_INVALID_ENCODING=81
  816. ERR_EXT_ENTITY_STANDALONE=82
  817. ERR_CONDSEC_INVALID=83
  818. ERR_VALUE_REQUIRED=84
  819. ERR_NOT_WELL_BALANCED=85
  820. ERR_EXTRA_CONTENT=86
  821. ERR_ENTITY_CHAR_ERROR=87
  822. ERR_ENTITY_PE_INTERNAL=88
  823. ERR_ENTITY_LOOP=89
  824. ERR_ENTITY_BOUNDARY=90
  825. ERR_INVALID_URI=91
  826. ERR_URI_FRAGMENT=92
  827. WAR_CATALOG_PI=93
  828. ERR_NO_DTD=94
  829. ERR_CONDSEC_INVALID_KEYWORD=95
  830. ERR_VERSION_MISSING=96
  831. WAR_UNKNOWN_VERSION=97
  832. WAR_LANG_VALUE=98
  833. WAR_NS_URI=99
  834. WAR_NS_URI_RELATIVE=100
  835. ERR_MISSING_ENCODING=101
  836. WAR_SPACE_VALUE=102
  837. ERR_NOT_STANDALONE=103
  838. ERR_ENTITY_PROCESSING=104
  839. ERR_NOTATION_PROCESSING=105
  840. WAR_NS_COLUMN=106
  841. WAR_ENTITY_REDEFINED=107
  842. ERR_UNKNOWN_VERSION=108
  843. ERR_VERSION_MISMATCH=109
  844. ERR_NAME_TOO_LONG=110
  845. ERR_USER_STOP=111
  846. ERR_COMMENT_ABRUPTLY_ENDED=112
  847. NS_ERR_XML_NAMESPACE=200
  848. NS_ERR_UNDEFINED_NAMESPACE=201
  849. NS_ERR_QNAME=202
  850. NS_ERR_ATTRIBUTE_REDEFINED=203
  851. NS_ERR_EMPTY=204
  852. NS_ERR_COLON=205
  853. DTD_ATTRIBUTE_DEFAULT=500
  854. DTD_ATTRIBUTE_REDEFINED=501
  855. DTD_ATTRIBUTE_VALUE=502
  856. DTD_CONTENT_ERROR=503
  857. DTD_CONTENT_MODEL=504
  858. DTD_CONTENT_NOT_DETERMINIST=505
  859. DTD_DIFFERENT_PREFIX=506
  860. DTD_ELEM_DEFAULT_NAMESPACE=507
  861. DTD_ELEM_NAMESPACE=508
  862. DTD_ELEM_REDEFINED=509
  863. DTD_EMPTY_NOTATION=510
  864. DTD_ENTITY_TYPE=511
  865. DTD_ID_FIXED=512
  866. DTD_ID_REDEFINED=513
  867. DTD_ID_SUBSET=514
  868. DTD_INVALID_CHILD=515
  869. DTD_INVALID_DEFAULT=516
  870. DTD_LOAD_ERROR=517
  871. DTD_MISSING_ATTRIBUTE=518
  872. DTD_MIXED_CORRUPT=519
  873. DTD_MULTIPLE_ID=520
  874. DTD_NO_DOC=521
  875. DTD_NO_DTD=522
  876. DTD_NO_ELEM_NAME=523
  877. DTD_NO_PREFIX=524
  878. DTD_NO_ROOT=525
  879. DTD_NOTATION_REDEFINED=526
  880. DTD_NOTATION_VALUE=527
  881. DTD_NOT_EMPTY=528
  882. DTD_NOT_PCDATA=529
  883. DTD_NOT_STANDALONE=530
  884. DTD_ROOT_NAME=531
  885. DTD_STANDALONE_WHITE_SPACE=532
  886. DTD_UNKNOWN_ATTRIBUTE=533
  887. DTD_UNKNOWN_ELEM=534
  888. DTD_UNKNOWN_ENTITY=535
  889. DTD_UNKNOWN_ID=536
  890. DTD_UNKNOWN_NOTATION=537
  891. DTD_STANDALONE_DEFAULTED=538
  892. DTD_XMLID_VALUE=539
  893. DTD_XMLID_TYPE=540
  894. DTD_DUP_TOKEN=541
  895. HTML_STRUCURE_ERROR=800
  896. HTML_UNKNOWN_TAG=801
  897. RNGP_ANYNAME_ATTR_ANCESTOR=1000
  898. RNGP_ATTR_CONFLICT=1001
  899. RNGP_ATTRIBUTE_CHILDREN=1002
  900. RNGP_ATTRIBUTE_CONTENT=1003
  901. RNGP_ATTRIBUTE_EMPTY=1004
  902. RNGP_ATTRIBUTE_NOOP=1005
  903. RNGP_CHOICE_CONTENT=1006
  904. RNGP_CHOICE_EMPTY=1007
  905. RNGP_CREATE_FAILURE=1008
  906. RNGP_DATA_CONTENT=1009
  907. RNGP_DEF_CHOICE_AND_INTERLEAVE=1010
  908. RNGP_DEFINE_CREATE_FAILED=1011
  909. RNGP_DEFINE_EMPTY=1012
  910. RNGP_DEFINE_MISSING=1013
  911. RNGP_DEFINE_NAME_MISSING=1014
  912. RNGP_ELEM_CONTENT_EMPTY=1015
  913. RNGP_ELEM_CONTENT_ERROR=1016
  914. RNGP_ELEMENT_EMPTY=1017
  915. RNGP_ELEMENT_CONTENT=1018
  916. RNGP_ELEMENT_NAME=1019
  917. RNGP_ELEMENT_NO_CONTENT=1020
  918. RNGP_ELEM_TEXT_CONFLICT=1021
  919. RNGP_EMPTY=1022
  920. RNGP_EMPTY_CONSTRUCT=1023
  921. RNGP_EMPTY_CONTENT=1024
  922. RNGP_EMPTY_NOT_EMPTY=1025
  923. RNGP_ERROR_TYPE_LIB=1026
  924. RNGP_EXCEPT_EMPTY=1027
  925. RNGP_EXCEPT_MISSING=1028
  926. RNGP_EXCEPT_MULTIPLE=1029
  927. RNGP_EXCEPT_NO_CONTENT=1030
  928. RNGP_EXTERNALREF_EMTPY=1031
  929. RNGP_EXTERNAL_REF_FAILURE=1032
  930. RNGP_EXTERNALREF_RECURSE=1033
  931. RNGP_FORBIDDEN_ATTRIBUTE=1034
  932. RNGP_FOREIGN_ELEMENT=1035
  933. RNGP_GRAMMAR_CONTENT=1036
  934. RNGP_GRAMMAR_EMPTY=1037
  935. RNGP_GRAMMAR_MISSING=1038
  936. RNGP_GRAMMAR_NO_START=1039
  937. RNGP_GROUP_ATTR_CONFLICT=1040
  938. RNGP_HREF_ERROR=1041
  939. RNGP_INCLUDE_EMPTY=1042
  940. RNGP_INCLUDE_FAILURE=1043
  941. RNGP_INCLUDE_RECURSE=1044
  942. RNGP_INTERLEAVE_ADD=1045
  943. RNGP_INTERLEAVE_CREATE_FAILED=1046
  944. RNGP_INTERLEAVE_EMPTY=1047
  945. RNGP_INTERLEAVE_NO_CONTENT=1048
  946. RNGP_INVALID_DEFINE_NAME=1049
  947. RNGP_INVALID_URI=1050
  948. RNGP_INVALID_VALUE=1051
  949. RNGP_MISSING_HREF=1052
  950. RNGP_NAME_MISSING=1053
  951. RNGP_NEED_COMBINE=1054
  952. RNGP_NOTALLOWED_NOT_EMPTY=1055
  953. RNGP_NSNAME_ATTR_ANCESTOR=1056
  954. RNGP_NSNAME_NO_NS=1057
  955. RNGP_PARAM_FORBIDDEN=1058
  956. RNGP_PARAM_NAME_MISSING=1059
  957. RNGP_PARENTREF_CREATE_FAILED=1060
  958. RNGP_PARENTREF_NAME_INVALID=1061
  959. RNGP_PARENTREF_NO_NAME=1062
  960. RNGP_PARENTREF_NO_PARENT=1063
  961. RNGP_PARENTREF_NOT_EMPTY=1064
  962. RNGP_PARSE_ERROR=1065
  963. RNGP_PAT_ANYNAME_EXCEPT_ANYNAME=1066
  964. RNGP_PAT_ATTR_ATTR=1067
  965. RNGP_PAT_ATTR_ELEM=1068
  966. RNGP_PAT_DATA_EXCEPT_ATTR=1069
  967. RNGP_PAT_DATA_EXCEPT_ELEM=1070
  968. RNGP_PAT_DATA_EXCEPT_EMPTY=1071
  969. RNGP_PAT_DATA_EXCEPT_GROUP=1072
  970. RNGP_PAT_DATA_EXCEPT_INTERLEAVE=1073
  971. RNGP_PAT_DATA_EXCEPT_LIST=1074
  972. RNGP_PAT_DATA_EXCEPT_ONEMORE=1075
  973. RNGP_PAT_DATA_EXCEPT_REF=1076
  974. RNGP_PAT_DATA_EXCEPT_TEXT=1077
  975. RNGP_PAT_LIST_ATTR=1078
  976. RNGP_PAT_LIST_ELEM=1079
  977. RNGP_PAT_LIST_INTERLEAVE=1080
  978. RNGP_PAT_LIST_LIST=1081
  979. RNGP_PAT_LIST_REF=1082
  980. RNGP_PAT_LIST_TEXT=1083
  981. RNGP_PAT_NSNAME_EXCEPT_ANYNAME=1084
  982. RNGP_PAT_NSNAME_EXCEPT_NSNAME=1085
  983. RNGP_PAT_ONEMORE_GROUP_ATTR=1086
  984. RNGP_PAT_ONEMORE_INTERLEAVE_ATTR=1087
  985. RNGP_PAT_START_ATTR=1088
  986. RNGP_PAT_START_DATA=1089
  987. RNGP_PAT_START_EMPTY=1090
  988. RNGP_PAT_START_GROUP=1091
  989. RNGP_PAT_START_INTERLEAVE=1092
  990. RNGP_PAT_START_LIST=1093
  991. RNGP_PAT_START_ONEMORE=1094
  992. RNGP_PAT_START_TEXT=1095
  993. RNGP_PAT_START_VALUE=1096
  994. RNGP_PREFIX_UNDEFINED=1097
  995. RNGP_REF_CREATE_FAILED=1098
  996. RNGP_REF_CYCLE=1099
  997. RNGP_REF_NAME_INVALID=1100
  998. RNGP_REF_NO_DEF=1101
  999. RNGP_REF_NO_NAME=1102
  1000. RNGP_REF_NOT_EMPTY=1103
  1001. RNGP_START_CHOICE_AND_INTERLEAVE=1104
  1002. RNGP_START_CONTENT=1105
  1003. RNGP_START_EMPTY=1106
  1004. RNGP_START_MISSING=1107
  1005. RNGP_TEXT_EXPECTED=1108
  1006. RNGP_TEXT_HAS_CHILD=1109
  1007. RNGP_TYPE_MISSING=1110
  1008. RNGP_TYPE_NOT_FOUND=1111
  1009. RNGP_TYPE_VALUE=1112
  1010. RNGP_UNKNOWN_ATTRIBUTE=1113
  1011. RNGP_UNKNOWN_COMBINE=1114
  1012. RNGP_UNKNOWN_CONSTRUCT=1115
  1013. RNGP_UNKNOWN_TYPE_LIB=1116
  1014. RNGP_URI_FRAGMENT=1117
  1015. RNGP_URI_NOT_ABSOLUTE=1118
  1016. RNGP_VALUE_EMPTY=1119
  1017. RNGP_VALUE_NO_CONTENT=1120
  1018. RNGP_XMLNS_NAME=1121
  1019. RNGP_XML_NS=1122
  1020. XPATH_EXPRESSION_OK=1200
  1021. XPATH_NUMBER_ERROR=1201
  1022. XPATH_UNFINISHED_LITERAL_ERROR=1202
  1023. XPATH_START_LITERAL_ERROR=1203
  1024. XPATH_VARIABLE_REF_ERROR=1204
  1025. XPATH_UNDEF_VARIABLE_ERROR=1205
  1026. XPATH_INVALID_PREDICATE_ERROR=1206
  1027. XPATH_EXPR_ERROR=1207
  1028. XPATH_UNCLOSED_ERROR=1208
  1029. XPATH_UNKNOWN_FUNC_ERROR=1209
  1030. XPATH_INVALID_OPERAND=1210
  1031. XPATH_INVALID_TYPE=1211
  1032. XPATH_INVALID_ARITY=1212
  1033. XPATH_INVALID_CTXT_SIZE=1213
  1034. XPATH_INVALID_CTXT_POSITION=1214
  1035. XPATH_MEMORY_ERROR=1215
  1036. XPTR_SYNTAX_ERROR=1216
  1037. XPTR_RESOURCE_ERROR=1217
  1038. XPTR_SUB_RESOURCE_ERROR=1218
  1039. XPATH_UNDEF_PREFIX_ERROR=1219
  1040. XPATH_ENCODING_ERROR=1220
  1041. XPATH_INVALID_CHAR_ERROR=1221
  1042. TREE_INVALID_HEX=1300
  1043. TREE_INVALID_DEC=1301
  1044. TREE_UNTERMINATED_ENTITY=1302
  1045. TREE_NOT_UTF8=1303
  1046. SAVE_NOT_UTF8=1400
  1047. SAVE_CHAR_INVALID=1401
  1048. SAVE_NO_DOCTYPE=1402
  1049. SAVE_UNKNOWN_ENCODING=1403
  1050. REGEXP_COMPILE_ERROR=1450
  1051. IO_UNKNOWN=1500
  1052. IO_EACCES=1501
  1053. IO_EAGAIN=1502
  1054. IO_EBADF=1503
  1055. IO_EBADMSG=1504
  1056. IO_EBUSY=1505
  1057. IO_ECANCELED=1506
  1058. IO_ECHILD=1507
  1059. IO_EDEADLK=1508
  1060. IO_EDOM=1509
  1061. IO_EEXIST=1510
  1062. IO_EFAULT=1511
  1063. IO_EFBIG=1512
  1064. IO_EINPROGRESS=1513
  1065. IO_EINTR=1514
  1066. IO_EINVAL=1515
  1067. IO_EIO=1516
  1068. IO_EISDIR=1517
  1069. IO_EMFILE=1518
  1070. IO_EMLINK=1519
  1071. IO_EMSGSIZE=1520
  1072. IO_ENAMETOOLONG=1521
  1073. IO_ENFILE=1522
  1074. IO_ENODEV=1523
  1075. IO_ENOENT=1524
  1076. IO_ENOEXEC=1525
  1077. IO_ENOLCK=1526
  1078. IO_ENOMEM=1527
  1079. IO_ENOSPC=1528
  1080. IO_ENOSYS=1529
  1081. IO_ENOTDIR=1530
  1082. IO_ENOTEMPTY=1531
  1083. IO_ENOTSUP=1532
  1084. IO_ENOTTY=1533
  1085. IO_ENXIO=1534
  1086. IO_EPERM=1535
  1087. IO_EPIPE=1536
  1088. IO_ERANGE=1537
  1089. IO_EROFS=1538
  1090. IO_ESPIPE=1539
  1091. IO_ESRCH=1540
  1092. IO_ETIMEDOUT=1541
  1093. IO_EXDEV=1542
  1094. IO_NETWORK_ATTEMPT=1543
  1095. IO_ENCODER=1544
  1096. IO_FLUSH=1545
  1097. IO_WRITE=1546
  1098. IO_NO_INPUT=1547
  1099. IO_BUFFER_FULL=1548
  1100. IO_LOAD_ERROR=1549
  1101. IO_ENOTSOCK=1550
  1102. IO_EISCONN=1551
  1103. IO_ECONNREFUSED=1552
  1104. IO_ENETUNREACH=1553
  1105. IO_EADDRINUSE=1554
  1106. IO_EALREADY=1555
  1107. IO_EAFNOSUPPORT=1556
  1108. XINCLUDE_RECURSION=1600
  1109. XINCLUDE_PARSE_VALUE=1601
  1110. XINCLUDE_ENTITY_DEF_MISMATCH=1602
  1111. XINCLUDE_NO_HREF=1603
  1112. XINCLUDE_NO_FALLBACK=1604
  1113. XINCLUDE_HREF_URI=1605
  1114. XINCLUDE_TEXT_FRAGMENT=1606
  1115. XINCLUDE_TEXT_DOCUMENT=1607
  1116. XINCLUDE_INVALID_CHAR=1608
  1117. XINCLUDE_BUILD_FAILED=1609
  1118. XINCLUDE_UNKNOWN_ENCODING=1610
  1119. XINCLUDE_MULTIPLE_ROOT=1611
  1120. XINCLUDE_XPTR_FAILED=1612
  1121. XINCLUDE_XPTR_RESULT=1613
  1122. XINCLUDE_INCLUDE_IN_INCLUDE=1614
  1123. XINCLUDE_FALLBACKS_IN_INCLUDE=1615
  1124. XINCLUDE_FALLBACK_NOT_IN_INCLUDE=1616
  1125. XINCLUDE_DEPRECATED_NS=1617
  1126. XINCLUDE_FRAGMENT_ID=1618
  1127. CATALOG_MISSING_ATTR=1650
  1128. CATALOG_ENTRY_BROKEN=1651
  1129. CATALOG_PREFER_VALUE=1652
  1130. CATALOG_NOT_CATALOG=1653
  1131. CATALOG_RECURSION=1654
  1132. SCHEMAP_PREFIX_UNDEFINED=1700
  1133. SCHEMAP_ATTRFORMDEFAULT_VALUE=1701
  1134. SCHEMAP_ATTRGRP_NONAME_NOREF=1702
  1135. SCHEMAP_ATTR_NONAME_NOREF=1703
  1136. SCHEMAP_COMPLEXTYPE_NONAME_NOREF=1704
  1137. SCHEMAP_ELEMFORMDEFAULT_VALUE=1705
  1138. SCHEMAP_ELEM_NONAME_NOREF=1706
  1139. SCHEMAP_EXTENSION_NO_BASE=1707
  1140. SCHEMAP_FACET_NO_VALUE=1708
  1141. SCHEMAP_FAILED_BUILD_IMPORT=1709
  1142. SCHEMAP_GROUP_NONAME_NOREF=1710
  1143. SCHEMAP_IMPORT_NAMESPACE_NOT_URI=1711
  1144. SCHEMAP_IMPORT_REDEFINE_NSNAME=1712
  1145. SCHEMAP_IMPORT_SCHEMA_NOT_URI=1713
  1146. SCHEMAP_INVALID_BOOLEAN=1714
  1147. SCHEMAP_INVALID_ENUM=1715
  1148. SCHEMAP_INVALID_FACET=1716
  1149. SCHEMAP_INVALID_FACET_VALUE=1717
  1150. SCHEMAP_INVALID_MAXOCCURS=1718
  1151. SCHEMAP_INVALID_MINOCCURS=1719
  1152. SCHEMAP_INVALID_REF_AND_SUBTYPE=1720
  1153. SCHEMAP_INVALID_WHITE_SPACE=1721
  1154. SCHEMAP_NOATTR_NOREF=1722
  1155. SCHEMAP_NOTATION_NO_NAME=1723
  1156. SCHEMAP_NOTYPE_NOREF=1724
  1157. SCHEMAP_REF_AND_SUBTYPE=1725
  1158. SCHEMAP_RESTRICTION_NONAME_NOREF=1726
  1159. SCHEMAP_SIMPLETYPE_NONAME=1727
  1160. SCHEMAP_TYPE_AND_SUBTYPE=1728
  1161. SCHEMAP_UNKNOWN_ALL_CHILD=1729
  1162. SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD=1730
  1163. SCHEMAP_UNKNOWN_ATTR_CHILD=1731
  1164. SCHEMAP_UNKNOWN_ATTRGRP_CHILD=1732
  1165. SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP=1733
  1166. SCHEMAP_UNKNOWN_BASE_TYPE=1734
  1167. SCHEMAP_UNKNOWN_CHOICE_CHILD=1735
  1168. SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD=1736
  1169. SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD=1737
  1170. SCHEMAP_UNKNOWN_ELEM_CHILD=1738
  1171. SCHEMAP_UNKNOWN_EXTENSION_CHILD=1739
  1172. SCHEMAP_UNKNOWN_FACET_CHILD=1740
  1173. SCHEMAP_UNKNOWN_FACET_TYPE=1741
  1174. SCHEMAP_UNKNOWN_GROUP_CHILD=1742
  1175. SCHEMAP_UNKNOWN_IMPORT_CHILD=1743
  1176. SCHEMAP_UNKNOWN_LIST_CHILD=1744
  1177. SCHEMAP_UNKNOWN_NOTATION_CHILD=1745
  1178. SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD=1746
  1179. SCHEMAP_UNKNOWN_REF=1747
  1180. SCHEMAP_UNKNOWN_RESTRICTION_CHILD=1748
  1181. SCHEMAP_UNKNOWN_SCHEMAS_CHILD=1749
  1182. SCHEMAP_UNKNOWN_SEQUENCE_CHILD=1750
  1183. SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD=1751
  1184. SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD=1752
  1185. SCHEMAP_UNKNOWN_TYPE=1753
  1186. SCHEMAP_UNKNOWN_UNION_CHILD=1754
  1187. SCHEMAP_ELEM_DEFAULT_FIXED=1755
  1188. SCHEMAP_REGEXP_INVALID=1756
  1189. SCHEMAP_FAILED_LOAD=1757
  1190. SCHEMAP_NOTHING_TO_PARSE=1758
  1191. SCHEMAP_NOROOT=1759
  1192. SCHEMAP_REDEFINED_GROUP=1760
  1193. SCHEMAP_REDEFINED_TYPE=1761
  1194. SCHEMAP_REDEFINED_ELEMENT=1762
  1195. SCHEMAP_REDEFINED_ATTRGROUP=1763
  1196. SCHEMAP_REDEFINED_ATTR=1764
  1197. SCHEMAP_REDEFINED_NOTATION=1765
  1198. SCHEMAP_FAILED_PARSE=1766
  1199. SCHEMAP_UNKNOWN_PREFIX=1767
  1200. SCHEMAP_DEF_AND_PREFIX=1768
  1201. SCHEMAP_UNKNOWN_INCLUDE_CHILD=1769
  1202. SCHEMAP_INCLUDE_SCHEMA_NOT_URI=1770
  1203. SCHEMAP_INCLUDE_SCHEMA_NO_URI=1771
  1204. SCHEMAP_NOT_SCHEMA=1772
  1205. SCHEMAP_UNKNOWN_MEMBER_TYPE=1773
  1206. SCHEMAP_INVALID_ATTR_USE=1774
  1207. SCHEMAP_RECURSIVE=1775
  1208. SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE=1776
  1209. SCHEMAP_INVALID_ATTR_COMBINATION=1777
  1210. SCHEMAP_INVALID_ATTR_INLINE_COMBINATION=1778
  1211. SCHEMAP_MISSING_SIMPLETYPE_CHILD=1779
  1212. SCHEMAP_INVALID_ATTR_NAME=1780
  1213. SCHEMAP_REF_AND_CONTENT=1781
  1214. SCHEMAP_CT_PROPS_CORRECT_1=1782
  1215. SCHEMAP_CT_PROPS_CORRECT_2=1783
  1216. SCHEMAP_CT_PROPS_CORRECT_3=1784
  1217. SCHEMAP_CT_PROPS_CORRECT_4=1785
  1218. SCHEMAP_CT_PROPS_CORRECT_5=1786
  1219. SCHEMAP_DERIVATION_OK_RESTRICTION_1=1787
  1220. SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1=1788
  1221. SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2=1789
  1222. SCHEMAP_DERIVATION_OK_RESTRICTION_2_2=1790
  1223. SCHEMAP_DERIVATION_OK_RESTRICTION_3=1791
  1224. SCHEMAP_WILDCARD_INVALID_NS_MEMBER=1792
  1225. SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE=1793
  1226. SCHEMAP_UNION_NOT_EXPRESSIBLE=1794
  1227. SCHEMAP_SRC_IMPORT_3_1=1795
  1228. SCHEMAP_SRC_IMPORT_3_2=1796
  1229. SCHEMAP_DERIVATION_OK_RESTRICTION_4_1=1797
  1230. SCHEMAP_DERIVATION_OK_RESTRICTION_4_2=1798
  1231. SCHEMAP_DERIVATION_OK_RESTRICTION_4_3=1799
  1232. SCHEMAP_COS_CT_EXTENDS_1_3=1800
  1233. SCHEMAV_NOROOT=1801
  1234. SCHEMAV_UNDECLAREDELEM=1802
  1235. SCHEMAV_NOTTOPLEVEL=1803
  1236. SCHEMAV_MISSING=1804
  1237. SCHEMAV_WRONGELEM=1805
  1238. SCHEMAV_NOTYPE=1806
  1239. SCHEMAV_NOROLLBACK=1807
  1240. SCHEMAV_ISABSTRACT=1808
  1241. SCHEMAV_NOTEMPTY=1809
  1242. SCHEMAV_ELEMCONT=1810
  1243. SCHEMAV_HAVEDEFAULT=1811
  1244. SCHEMAV_NOTNILLABLE=1812
  1245. SCHEMAV_EXTRACONTENT=1813
  1246. SCHEMAV_INVALIDATTR=1814
  1247. SCHEMAV_INVALIDELEM=1815
  1248. SCHEMAV_NOTDETERMINIST=1816
  1249. SCHEMAV_CONSTRUCT=1817
  1250. SCHEMAV_INTERNAL=1818
  1251. SCHEMAV_NOTSIMPLE=1819
  1252. SCHEMAV_ATTRUNKNOWN=1820
  1253. SCHEMAV_ATTRINVALID=1821
  1254. SCHEMAV_VALUE=1822
  1255. SCHEMAV_FACET=1823
  1256. SCHEMAV_CVC_DATATYPE_VALID_1_2_1=1824
  1257. SCHEMAV_CVC_DATATYPE_VALID_1_2_2=1825
  1258. SCHEMAV_CVC_DATATYPE_VALID_1_2_3=1826
  1259. SCHEMAV_CVC_TYPE_3_1_1=1827
  1260. SCHEMAV_CVC_TYPE_3_1_2=1828
  1261. SCHEMAV_CVC_FACET_VALID=1829
  1262. SCHEMAV_CVC_LENGTH_VALID=1830
  1263. SCHEMAV_CVC_MINLENGTH_VALID=1831
  1264. SCHEMAV_CVC_MAXLENGTH_VALID=1832
  1265. SCHEMAV_CVC_MININCLUSIVE_VALID=1833
  1266. SCHEMAV_CVC_MAXINCLUSIVE_VALID=1834
  1267. SCHEMAV_CVC_MINEXCLUSIVE_VALID=1835
  1268. SCHEMAV_CVC_MAXEXCLUSIVE_VALID=1836
  1269. SCHEMAV_CVC_TOTALDIGITS_VALID=1837
  1270. SCHEMAV_CVC_FRACTIONDIGITS_VALID=1838
  1271. SCHEMAV_CVC_PATTERN_VALID=1839
  1272. SCHEMAV_CVC_ENUMERATION_VALID=1840
  1273. SCHEMAV_CVC_COMPLEX_TYPE_2_1=1841
  1274. SCHEMAV_CVC_COMPLEX_TYPE_2_2=1842
  1275. SCHEMAV_CVC_COMPLEX_TYPE_2_3=1843
  1276. SCHEMAV_CVC_COMPLEX_TYPE_2_4=1844
  1277. SCHEMAV_CVC_ELT_1=1845
  1278. SCHEMAV_CVC_ELT_2=1846
  1279. SCHEMAV_CVC_ELT_3_1=1847
  1280. SCHEMAV_CVC_ELT_3_2_1=1848
  1281. SCHEMAV_CVC_ELT_3_2_2=1849
  1282. SCHEMAV_CVC_ELT_4_1=1850
  1283. SCHEMAV_CVC_ELT_4_2=1851
  1284. SCHEMAV_CVC_ELT_4_3=1852
  1285. SCHEMAV_CVC_ELT_5_1_1=1853
  1286. SCHEMAV_CVC_ELT_5_1_2=1854
  1287. SCHEMAV_CVC_ELT_5_2_1=1855
  1288. SCHEMAV_CVC_ELT_5_2_2_1=1856
  1289. SCHEMAV_CVC_ELT_5_2_2_2_1=1857
  1290. SCHEMAV_CVC_ELT_5_2_2_2_2=1858
  1291. SCHEMAV_CVC_ELT_6=1859
  1292. SCHEMAV_CVC_ELT_7=1860
  1293. SCHEMAV_CVC_ATTRIBUTE_1=1861
  1294. SCHEMAV_CVC_ATTRIBUTE_2=1862
  1295. SCHEMAV_CVC_ATTRIBUTE_3=1863
  1296. SCHEMAV_CVC_ATTRIBUTE_4=1864
  1297. SCHEMAV_CVC_COMPLEX_TYPE_3_1=1865
  1298. SCHEMAV_CVC_COMPLEX_TYPE_3_2_1=1866
  1299. SCHEMAV_CVC_COMPLEX_TYPE_3_2_2=1867
  1300. SCHEMAV_CVC_COMPLEX_TYPE_4=1868
  1301. SCHEMAV_CVC_COMPLEX_TYPE_5_1=1869
  1302. SCHEMAV_CVC_COMPLEX_TYPE_5_2=1870
  1303. SCHEMAV_ELEMENT_CONTENT=1871
  1304. SCHEMAV_DOCUMENT_ELEMENT_MISSING=1872
  1305. SCHEMAV_CVC_COMPLEX_TYPE_1=1873
  1306. SCHEMAV_CVC_AU=1874
  1307. SCHEMAV_CVC_TYPE_1=1875
  1308. SCHEMAV_CVC_TYPE_2=1876
  1309. SCHEMAV_CVC_IDC=1877
  1310. SCHEMAV_CVC_WILDCARD=1878
  1311. SCHEMAV_MISC=1879
  1312. XPTR_UNKNOWN_SCHEME=1900
  1313. XPTR_CHILDSEQ_START=1901
  1314. XPTR_EVAL_FAILED=1902
  1315. XPTR_EXTRA_OBJECTS=1903
  1316. C14N_CREATE_CTXT=1950
  1317. C14N_REQUIRES_UTF8=1951
  1318. C14N_CREATE_STACK=1952
  1319. C14N_INVALID_NODE=1953
  1320. C14N_UNKNOW_NODE=1954
  1321. C14N_RELATIVE_NAMESPACE=1955
  1322. FTP_PASV_ANSWER=2000
  1323. FTP_EPSV_ANSWER=2001
  1324. FTP_ACCNT=2002
  1325. FTP_URL_SYNTAX=2003
  1326. HTTP_URL_SYNTAX=2020
  1327. HTTP_USE_IP=2021
  1328. HTTP_UNKNOWN_HOST=2022
  1329. SCHEMAP_SRC_SIMPLE_TYPE_1=3000
  1330. SCHEMAP_SRC_SIMPLE_TYPE_2=3001
  1331. SCHEMAP_SRC_SIMPLE_TYPE_3=3002
  1332. SCHEMAP_SRC_SIMPLE_TYPE_4=3003
  1333. SCHEMAP_SRC_RESOLVE=3004
  1334. SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE=3005
  1335. SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE=3006
  1336. SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES=3007
  1337. SCHEMAP_ST_PROPS_CORRECT_1=3008
  1338. SCHEMAP_ST_PROPS_CORRECT_2=3009
  1339. SCHEMAP_ST_PROPS_CORRECT_3=3010
  1340. SCHEMAP_COS_ST_RESTRICTS_1_1=3011
  1341. SCHEMAP_COS_ST_RESTRICTS_1_2=3012
  1342. SCHEMAP_COS_ST_RESTRICTS_1_3_1=3013
  1343. SCHEMAP_COS_ST_RESTRICTS_1_3_2=3014
  1344. SCHEMAP_COS_ST_RESTRICTS_2_1=3015
  1345. SCHEMAP_COS_ST_RESTRICTS_2_3_1_1=3016
  1346. SCHEMAP_COS_ST_RESTRICTS_2_3_1_2=3017
  1347. SCHEMAP_COS_ST_RESTRICTS_2_3_2_1=3018
  1348. SCHEMAP_COS_ST_RESTRICTS_2_3_2_2=3019
  1349. SCHEMAP_COS_ST_RESTRICTS_2_3_2_3=3020
  1350. SCHEMAP_COS_ST_RESTRICTS_2_3_2_4=3021
  1351. SCHEMAP_COS_ST_RESTRICTS_2_3_2_5=3022
  1352. SCHEMAP_COS_ST_RESTRICTS_3_1=3023
  1353. SCHEMAP_COS_ST_RESTRICTS_3_3_1=3024
  1354. SCHEMAP_COS_ST_RESTRICTS_3_3_1_2=3025
  1355. SCHEMAP_COS_ST_RESTRICTS_3_3_2_2=3026
  1356. SCHEMAP_COS_ST_RESTRICTS_3_3_2_1=3027
  1357. SCHEMAP_COS_ST_RESTRICTS_3_3_2_3=3028
  1358. SCHEMAP_COS_ST_RESTRICTS_3_3_2_4=3029
  1359. SCHEMAP_COS_ST_RESTRICTS_3_3_2_5=3030
  1360. SCHEMAP_COS_ST_DERIVED_OK_2_1=3031
  1361. SCHEMAP_COS_ST_DERIVED_OK_2_2=3032
  1362. SCHEMAP_S4S_ELEM_NOT_ALLOWED=3033
  1363. SCHEMAP_S4S_ELEM_MISSING=3034
  1364. SCHEMAP_S4S_ATTR_NOT_ALLOWED=3035
  1365. SCHEMAP_S4S_ATTR_MISSING=3036
  1366. SCHEMAP_S4S_ATTR_INVALID_VALUE=3037
  1367. SCHEMAP_SRC_ELEMENT_1=3038
  1368. SCHEMAP_SRC_ELEMENT_2_1=3039
  1369. SCHEMAP_SRC_ELEMENT_2_2=3040
  1370. SCHEMAP_SRC_ELEMENT_3=3041
  1371. SCHEMAP_P_PROPS_CORRECT_1=3042
  1372. SCHEMAP_P_PROPS_CORRECT_2_1=3043
  1373. SCHEMAP_P_PROPS_CORRECT_2_2=3044
  1374. SCHEMAP_E_PROPS_CORRECT_2=3045
  1375. SCHEMAP_E_PROPS_CORRECT_3=3046
  1376. SCHEMAP_E_PROPS_CORRECT_4=3047
  1377. SCHEMAP_E_PROPS_CORRECT_5=3048
  1378. SCHEMAP_E_PROPS_CORRECT_6=3049
  1379. SCHEMAP_SRC_INCLUDE=3050
  1380. SCHEMAP_SRC_ATTRIBUTE_1=3051
  1381. SCHEMAP_SRC_ATTRIBUTE_2=3052
  1382. SCHEMAP_SRC_ATTRIBUTE_3_1=3053
  1383. SCHEMAP_SRC_ATTRIBUTE_3_2=3054
  1384. SCHEMAP_SRC_ATTRIBUTE_4=3055
  1385. SCHEMAP_NO_XMLNS=3056
  1386. SCHEMAP_NO_XSI=3057
  1387. SCHEMAP_COS_VALID_DEFAULT_1=3058
  1388. SCHEMAP_COS_VALID_DEFAULT_2_1=3059
  1389. SCHEMAP_COS_VALID_DEFAULT_2_2_1=3060
  1390. SCHEMAP_COS_VALID_DEFAULT_2_2_2=3061
  1391. SCHEMAP_CVC_SIMPLE_TYPE=3062
  1392. SCHEMAP_COS_CT_EXTENDS_1_1=3063
  1393. SCHEMAP_SRC_IMPORT_1_1=3064
  1394. SCHEMAP_SRC_IMPORT_1_2=3065
  1395. SCHEMAP_SRC_IMPORT_2=3066
  1396. SCHEMAP_SRC_IMPORT_2_1=3067
  1397. SCHEMAP_SRC_IMPORT_2_2=3068
  1398. SCHEMAP_INTERNAL=3069
  1399. SCHEMAP_NOT_DETERMINISTIC=3070
  1400. SCHEMAP_SRC_ATTRIBUTE_GROUP_1=3071
  1401. SCHEMAP_SRC_ATTRIBUTE_GROUP_2=3072
  1402. SCHEMAP_SRC_ATTRIBUTE_GROUP_3=3073
  1403. SCHEMAP_MG_PROPS_CORRECT_1=3074
  1404. SCHEMAP_MG_PROPS_CORRECT_2=3075
  1405. SCHEMAP_SRC_CT_1=3076
  1406. SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3=3077
  1407. SCHEMAP_AU_PROPS_CORRECT_2=3078
  1408. SCHEMAP_A_PROPS_CORRECT_2=3079
  1409. SCHEMAP_C_PROPS_CORRECT=3080
  1410. SCHEMAP_SRC_REDEFINE=3081
  1411. SCHEMAP_SRC_IMPORT=3082
  1412. SCHEMAP_WARN_SKIP_SCHEMA=3083
  1413. SCHEMAP_WARN_UNLOCATED_SCHEMA=3084
  1414. SCHEMAP_WARN_ATTR_REDECL_PROH=3085
  1415. SCHEMAP_WARN_ATTR_POINTLESS_PROH=3086
  1416. SCHEMAP_AG_PROPS_CORRECT=3087
  1417. SCHEMAP_COS_CT_EXTENDS_1_2=3088
  1418. SCHEMAP_AU_PROPS_CORRECT=3089
  1419. SCHEMAP_A_PROPS_CORRECT_3=3090
  1420. SCHEMAP_COS_ALL_LIMITED=3091
  1421. SCHEMATRONV_ASSERT=4000
  1422. SCHEMATRONV_REPORT=4001
  1423. MODULE_OPEN=4900
  1424. MODULE_CLOSE=4901
  1425. CHECK_FOUND_ELEMENT=5000
  1426. CHECK_FOUND_ATTRIBUTE=5001
  1427. CHECK_FOUND_TEXT=5002
  1428. CHECK_FOUND_CDATA=5003
  1429. CHECK_FOUND_ENTITYREF=5004
  1430. CHECK_FOUND_ENTITY=5005
  1431. CHECK_FOUND_PI=5006
  1432. CHECK_FOUND_COMMENT=5007
  1433. CHECK_FOUND_DOCTYPE=5008
  1434. CHECK_FOUND_FRAGMENT=5009
  1435. CHECK_FOUND_NOTATION=5010
  1436. CHECK_UNKNOWN_NODE=5011
  1437. CHECK_ENTITY_TYPE=5012
  1438. CHECK_NO_PARENT=5013
  1439. CHECK_NO_DOC=5014
  1440. CHECK_NO_NAME=5015
  1441. CHECK_NO_ELEM=5016
  1442. CHECK_WRONG_DOC=5017
  1443. CHECK_NO_PREV=5018
  1444. CHECK_WRONG_PREV=5019
  1445. CHECK_NO_NEXT=5020
  1446. CHECK_WRONG_NEXT=5021
  1447. CHECK_NOT_DTD=5022
  1448. CHECK_NOT_ATTR=5023
  1449. CHECK_NOT_ATTR_DECL=5024
  1450. CHECK_NOT_ELEM_DECL=5025
  1451. CHECK_NOT_ENTITY_DECL=5026
  1452. CHECK_NOT_NS_DECL=5027
  1453. CHECK_NO_HREF=5028
  1454. CHECK_WRONG_PARENT=5029
  1455. CHECK_NS_SCOPE=5030
  1456. CHECK_NS_ANCESTOR=5031
  1457. CHECK_NOT_UTF8=5032
  1458. CHECK_NO_DICT=5033
  1459. CHECK_NOT_NCNAME=5034
  1460. CHECK_OUTSIDE_DICT=5035
  1461. CHECK_WRONG_NAME=5036
  1462. CHECK_NAME_NOT_NULL=5037
  1463. I18N_NO_NAME=6000
  1464. I18N_NO_HANDLER=6001
  1465. I18N_EXCESS_HANDLER=6002
  1466. I18N_CONV_FAILED=6003
  1467. I18N_NO_OUTPUT=6004
  1468. BUF_OVERFLOW=7000
  1469. """
  1470. cdef object __RELAXNG_ERROR_TYPES = """\
  1471. RELAXNG_OK=0
  1472. RELAXNG_ERR_MEMORY=1
  1473. RELAXNG_ERR_TYPE=2
  1474. RELAXNG_ERR_TYPEVAL=3
  1475. RELAXNG_ERR_DUPID=4
  1476. RELAXNG_ERR_TYPECMP=5
  1477. RELAXNG_ERR_NOSTATE=6
  1478. RELAXNG_ERR_NODEFINE=7
  1479. RELAXNG_ERR_LISTEXTRA=8
  1480. RELAXNG_ERR_LISTEMPTY=9
  1481. RELAXNG_ERR_INTERNODATA=10
  1482. RELAXNG_ERR_INTERSEQ=11
  1483. RELAXNG_ERR_INTEREXTRA=12
  1484. RELAXNG_ERR_ELEMNAME=13
  1485. RELAXNG_ERR_ATTRNAME=14
  1486. RELAXNG_ERR_ELEMNONS=15
  1487. RELAXNG_ERR_ATTRNONS=16
  1488. RELAXNG_ERR_ELEMWRONGNS=17
  1489. RELAXNG_ERR_ATTRWRONGNS=18
  1490. RELAXNG_ERR_ELEMEXTRANS=19
  1491. RELAXNG_ERR_ATTREXTRANS=20
  1492. RELAXNG_ERR_ELEMNOTEMPTY=21
  1493. RELAXNG_ERR_NOELEM=22
  1494. RELAXNG_ERR_NOTELEM=23
  1495. RELAXNG_ERR_ATTRVALID=24
  1496. RELAXNG_ERR_CONTENTVALID=25
  1497. RELAXNG_ERR_EXTRACONTENT=26
  1498. RELAXNG_ERR_INVALIDATTR=27
  1499. RELAXNG_ERR_DATAELEM=28
  1500. RELAXNG_ERR_VALELEM=29
  1501. RELAXNG_ERR_LISTELEM=30
  1502. RELAXNG_ERR_DATATYPE=31
  1503. RELAXNG_ERR_VALUE=32
  1504. RELAXNG_ERR_LIST=33
  1505. RELAXNG_ERR_NOGRAMMAR=34
  1506. RELAXNG_ERR_EXTRADATA=35
  1507. RELAXNG_ERR_LACKDATA=36
  1508. RELAXNG_ERR_INTERNAL=37
  1509. RELAXNG_ERR_ELEMWRONG=38
  1510. RELAXNG_ERR_TEXTWRONG=39
  1511. """
  1512. # --- END: GENERATED CONSTANTS ---
  1513. __initErrorConstants()