067c1d3e29f93f887b3473e87df444aa996fda37
[profile/ivi/qtxmlpatterns.git] / src / xmlpatterns / environment / qreportcontext_p.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
6 **
7 ** This file is part of the QtXmlPatterns module of the Qt Toolkit.
8 **
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file.  Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 **
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **
32 **
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 //
43 //  W A R N I N G
44 //  -------------
45 //
46 // This file is not part of the Qt API.  It exists purely as an
47 // implementation detail.  This header file may change from version to
48 // version without notice, or even be removed.
49 //
50 // We mean it.
51
52 #ifndef Patternist_ReportContext_H
53 #define Patternist_ReportContext_H
54
55 #include <QSharedData>
56 #include <QAbstractUriResolver>
57 #include <QSourceLocation>
58
59 #include "qnamepool_p.h"
60 #include "qxmlname.h"
61
62 QT_BEGIN_HEADER
63
64 QT_BEGIN_NAMESPACE
65
66 class QAbstractMessageHandler;
67 class QSourceLocation;
68 class QString;
69
70 namespace QPatternist
71 {
72     class SourceLocationReflection;
73
74     /**
75      * @short A callback for reporting errors.
76      *
77      * ReportContext receives messages of various severity and type via its
78      * functions warning() and error(). In turn, ReportContext create Message instances
79      * and submit them to the QAbstractMessageHandler instance returned by messageHandler().
80      *
81      * The Message attributes are set as follows:
82      *
83      * - Message::description() - A translated, human-readable description
84      * - Message::type() - Message::Error if a static, dynamic or type error was encountered
85      * that halted compilation or evaluation, or Message::Warning in case of a warning
86      * - Message::identifier() - This is a URI consisting of the error namespace with the
87      * error code as fragment. For example, a Message representing a syntax error
88      * would return the type "http://www.w3.org/2005/xqt-errors#XPST0003". The convenience
89      * function codeFromURI() can be used to extract the error code. The error namespace
90      * is typically the namespace for XPath and XQuery errors(as in the previous example), but
91      * can also be user defined.
92      *
93      * @see <a href="http://www.w3.org/TR/xpath20/#id-identifying-errors">XML Path Language
94      * (XPath) 2.0, 2.3.2 Identifying and Reporting Errors</a>
95      * @see <a href="http://www.w3.org/TR/xpath-functions/#func-error">XQuery 1.0 and
96      * XPath 2.0 Functions and Operators, 3 The Error Function</a>
97      * @author Frans Englich <frans.englich@nokia.com>
98      * @warning This file is auto-generated from extractErrorCodes.xsl. Any
99      * modifications done to this file are lost.
100      */
101     class Q_AUTOTEST_EXPORT ReportContext : public QSharedData
102     {
103     public:
104         typedef QHash<const SourceLocationReflection *, QSourceLocation> LocationHash;
105
106         /**
107          * A smart pointer wrapping ReportContext instances.
108          */
109         typedef QExplicitlySharedDataPointer<ReportContext> Ptr;
110
111         /**
112          * @short Default constructors.
113          *
114          * For some reason GCC fails to synthesize it, so we provide an empty
115          * one here.
116          */
117         inline ReportContext() {}
118
119         virtual ~ReportContext();
120
121         /**
122          * Error codes that corresponds to the error codes defined in the
123          * relevant specifications. They are used throughout the API for
124          * identifying error conditions.
125          *
126          * While strings could have been used for identifying errors, enums
127          * reduces bugs by providing type safety.
128          *
129          * @see <a href="http://www.w3.org/TR/xpath20/#errors">XML
130          * Path Language (XPath) 2.0, 2.3 Error Handling</a>
131          * @see <a href="http://www.w3.org/TR/xpath-functions/#d1e10985">XQuery 1.0
132          * and XPath 2.0 Functions and Operators, C Error Summary</a>
133          * @see <a href="http://www.w3.org/TR/xslt20/#error-summary">XSL Transformations
134          * (XSLT) Version 2.0, E Summary of Error Conditions (Non-Normative)</a>
135          * @note The enumerator values' Doxygen documentation is copied from the
136          * W3C documents
137          * <a href="http://www.w3.org/TR/xpath-functions">XQuery 1.0 and XPath
138          * 2.0 Functions and Operators</a>,
139          * <a href="http://www.w3.org/TR/xpath20">XML Path Language (XPath) 2.0</a>, and
140          * <a href="http://www.w3.org/TR/xslt20/">XSL Transformations (XSLT)
141          * Version 2.0</a>, respectively. The doxygen documentation is therefore covered
142          * by the following legal notice:
143          * "Copyright @ 2005 W3C&reg; (MIT, ERCIM, Keio), All Rights Reserved. W3C
144          * <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
145          * <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
146          * <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document
147          * use</a> rules apply."
148          * @warning This enumerator is auto-generated from the relevant specifications
149          * by the XSL-T stylesheet extractErrorCodes.xsl. Hence, any modifications
150          * done to this file, in contrary to the stylesheet, are therefore lost.
151          */
152         enum ErrorCode
153         {
154             /**
155              * XML Schema error code.
156              */
157             XSDError,
158
159             /**
160              * It is a static error if analysis of an expression relies on some
161              * component of the static context that has not been assigned a
162              * value.
163              */
164             XPST0001,
165
166             /**
167              * It is a dynamic error if evaluation of an expression relies on
168              * some part of the dynamic context that has not been assigned a
169              * value.
170              */
171             XPDY0002,
172
173             /**
174              * It is a static error if an expression is not a valid instance
175              * of the grammar defined in A.1 EBNF.
176              */
177             XPST0003,
178
179             /**
180              * It is a type error if, during the static analysis phase, an expression
181              * is found to have a static type that is not appropriate for the
182              * context in which the expression occurs, or during the dynamic
183              * evaluation phase, the dynamic type of a value does not match
184              * a required type as specified by the matching rules in 2.5.4 SequenceType
185              * Matching.
186              */
187             XPTY0004,
188
189             /**
190              * During the analysis phase, it is a static error if the static
191              * type assigned to an expression other than the expression () or
192              * data(()) is empty-sequence().
193              */
194             XPST0005,
195
196             /**
197              * (Not currently used.)
198              */
199             XPTY0006,
200
201             /**
202              * (Not currently used.)
203              */
204             XPTY0007,
205
206             /**
207              * It is a static error if an expression refers to an element name,
208              * attribute name, schema type name, namespace prefix, or variable
209              * name that is not defined in the static context, except for an
210              * ElementName in an ElementTest or an AttributeName in an AttributeTest.
211              */
212             XPST0008,
213
214             /**
215              * An implementation that does not support the Schema Import Feature
216              * must raise a static error if a Prolog contains a schema import.
217              */
218             XQST0009,
219
220             /**
221              * An implementation must raise a static error if it encounters
222              * a reference to an axis that it does not support.
223              */
224             XPST0010,
225
226             /**
227              * It is a static error if the set of definitions contained in all
228              * schemas imported by a Prolog do not satisfy the conditions for
229              * schema validity specified in Sections 3 and 5 of [XML Schema]
230              * Part 1--i.e., each definition must be valid, complete, and unique.
231              */
232             XQST0012,
233
234             /**
235              * It is a static error if an implementation recognizes a pragma
236              * but determines that its content is invalid.
237              */
238             XQST0013,
239
240             /**
241              * (Not currently used.)
242              */
243             XQST0014,
244
245             /**
246              * (Not currently used.)
247              */
248             XQST0015,
249
250             /**
251              * An implementation that does not support the Module Feature raises
252              * a static error if it encounters a module declaration or a module
253              * import.
254              */
255             XQST0016,
256
257             /**
258              * It is a static error if the expanded QName and number of arguments
259              * in a function call do not match the name and arity of a function
260              * signature in the static context.
261              */
262             XPST0017,
263
264             /**
265              * It is a type error if the result of the last step in a path expression
266              * contains both nodes and atomic values.
267              */
268             XPTY0018,
269
270             /**
271              * It is a type error if the result of a step (other than the last
272              * step) in a path expression contains an atomic value.
273              */
274             XPTY0019,
275
276             /**
277              * It is a type error if, in an axis step, the context item is not
278              * a node.
279              */
280             XPTY0020,
281
282             /**
283              * (Not currently used.)
284              */
285             XPDY0021,
286
287             /**
288              * It is a static error if the value of a namespace declaration
289              * attribute is not a URILiteral.
290              */
291             XQST0022,
292
293             /**
294              * (Not currently used.)
295              */
296             XQTY0023,
297
298             /**
299              * It is a type error if the content sequence in an element constructor
300              * contains an attribute node following a node that is not an attribute
301              * node.
302              */
303             XQTY0024,
304
305             /**
306              * It is a dynamic error if any attribute of a constructed element
307              * does not have a name that is distinct from the names of all other
308              * attributes of the constructed element.
309              */
310             XQDY0025,
311
312             /**
313              * It is a dynamic error if the result of the content expression
314              * of a computed processing instruction constructor contains the
315              * string "?&gt;".
316              */
317             XQDY0026,
318
319             /**
320              * In a validate expression, it is a dynamic error if the root element
321              * information item in the PSVI resulting from validation does not
322              * have the expected validity property: valid if validation mode
323              * is strict, or either valid or notKnown if validation mode is
324              * lax.
325              */
326             XQDY0027,
327
328             /**
329              * (Not currently used.)
330              */
331             XQTY0028,
332
333             /**
334              * (Not currently used.)
335              */
336             XQDY0029,
337
338             /**
339              * It is a type error if the argument of a validate expression does
340              * not evaluate to exactly one document or element node.
341              */
342             XQTY0030,
343
344             /**
345              * It is a static error if the version number specified in a version
346              * declaration is not supported by the implementation.
347              */
348             XQST0031,
349
350             /**
351              * A static error is raised if a Prolog contains more than one base
352              * URI declaration.
353              */
354             XQST0032,
355
356             /**
357              * It is a static error if a module contains multiple bindings for
358              * the same namespace prefix.
359              */
360             XQST0033,
361
362             /**
363              * It is a static error if multiple functions declared or imported
364              * by a module have the number of arguments and their expanded QNames
365              * are equal (as defined by the eq operator).
366              */
367             XQST0034,
368
369             /**
370              * It is a static error to import two schema components that both
371              * define the same name in the same symbol space and in the same
372              * scope.
373              */
374             XQST0035,
375
376             /**
377              * It is a static error to import a module if the importing module's
378              * in-scope schema types do not include definitions for the schema
379              * type names that appear in the declarations of variables and functions
380              * (whether in an argument type or return type) that are present
381              * in the imported module and are referenced in the importing module.
382              */
383             XQST0036,
384
385             /**
386              * (Not currently used.)
387              */
388             XQST0037,
389
390             /**
391              * It is a static error if a Prolog contains more than one default
392              * collation declaration, or the value specified by a default collation
393              * declaration is not present in statically known collations.
394              */
395             XQST0038,
396
397             /**
398              * It is a static error for a function declaration to have more
399              * than one parameter with the same name.
400              */
401             XQST0039,
402
403             /**
404              * It is a static error if the attributes specified by a direct
405              * element constructor do not have distinct expanded QNames.
406              */
407             XQST0040,
408
409             /**
410              * It is a dynamic error if the value of the name expression in
411              * a computed processing instruction constructor cannot be cast
412              * to the type xs:NCName.
413              */
414             XQDY0041,
415
416             /**
417              * (Not currently used.)
418              */
419             XQST0042,
420
421             /**
422              * (Not currently used.)
423              */
424             XQST0043,
425
426             /**
427              * It is a dynamic error if the node-name property of the node constructed
428              * by a computed attribute constructor is in the namespace http://www.w3.org/2000/xmlns/
429              * (corresponding to namespace prefix xmlns), or is in no namespace
430              * and has local name xmlns.
431              */
432             XQDY0044,
433
434             /**
435              * It is a static error if the function name in a function declaration
436              * is in one of the following namespaces: http://www.w3.org/XML/1998/namespace,
437              * http://www.w3.org/2001/XMLSchema, http://www.w3.org/2001/XMLSchema-instance,
438              * http://www.w3.org/2005/xpath-functions.
439              */
440             XQST0045,
441
442             /**
443              * An implementation MAY raise a static error if the value of a
444              * URILiteral is of nonzero length and is not in the lexical space
445              * of xs:anyURI.
446              */
447             XQST0046,
448
449             /**
450              * It is a static error if multiple module imports in the same Prolog
451              * specify the same target namespace.
452              */
453             XQST0047,
454
455             /**
456              * It is a static error if a function or variable declared in a
457              * library module is not in the target namespace of the library
458              * module.
459              */
460             XQST0048,
461
462             /**
463              * It is a static error if two or more variables declared or imported
464              * by a module have equal expanded QNames (as defined by the eq
465              * operator.)
466              */
467             XQST0049,
468
469             /**
470              * It is a dynamic error if the dynamic type of the operand of a
471              * treat expression does not match the sequence type specified by
472              * the treat expression. This error might also be raised by a path
473              * expression beginning with "/" or "//" if the context node is
474              * not in a tree that is rooted at a document node. This is because
475              * a leading "/" or "//" in a path expression is an abbreviation
476              * for an initial step that includes the clause treat as document-node().
477              */
478             XPDY0050,
479
480             /**
481              * It is a static error if a QName that is used as an AtomicType
482              * in a SequenceType is not defined in the in-scope schema types
483              * as an atomic type.
484              */
485             XPST0051,
486
487             /**
488              * (Not currently used.)
489              */
490             XQDY0052,
491
492             /**
493              * (Not currently used.)
494              */
495             XQST0053,
496
497             /**
498              * It is a static error if a variable depends on itself.
499              */
500             XQST0054,
501
502             /**
503              * It is a static error if a Prolog contains more than one copy-namespaces
504              * declaration.
505              */
506             XQST0055,
507
508             /**
509              * (Not currently used.)
510              */
511             XQST0056,
512
513             /**
514              * It is a static error if a schema import binds a namespace prefix
515              * but does not specify a target namespace other than a zero-length
516              * string.
517              */
518             XQST0057,
519
520             /**
521              * It is a static error if multiple schema imports specify the same
522              * target namespace.
523              */
524             XQST0058,
525
526             /**
527              * It is a static error if an implementation is unable to process
528              * a schema or module import by finding a schema or module with
529              * the specified target namespace.
530              */
531             XQST0059,
532
533             /**
534              * It is a static error if the name of a function in a function
535              * declaration is not in a namespace (expanded QName has a null
536              * namespace URI).
537              */
538             XQST0060,
539
540             /**
541              * It is a dynamic error if the operand of a validate expression
542              * is a document node whose children do not consist of exactly one
543              * element node and zero or more comment and processing instruction
544              * nodes, in any order.
545              */
546             XQDY0061,
547
548             /**
549              * (Not currently used.)
550              */
551             XQDY0062,
552
553             /**
554              * (Not currently used.)
555              */
556             XQST0063,
557
558             /**
559              * It is a dynamic error if the value of the name expression in
560              * a computed processing instruction constructor is equal to "XML"
561              * (in any combination of upper and lower case).
562              */
563             XQDY0064,
564
565             /**
566              * A static error is raised if a Prolog contains more than one ordering
567              * mode declaration.
568              */
569             XQST0065,
570
571             /**
572              * A static error is raised if a Prolog contains more than one default
573              * element/type namespace declaration, or more than one default
574              * function namespace declaration.
575              */
576             XQST0066,
577
578             /**
579              * A static error is raised if a Prolog contains more than one construction
580              * declaration.
581              */
582             XQST0067,
583
584             /**
585              * A static error is raised if a Prolog contains more than one boundary-space
586              * declaration.
587              */
588             XQST0068,
589
590             /**
591              * A static error is raised if a Prolog contains more than one empty
592              * order declaration.
593              */
594             XQST0069,
595
596             /**
597              * A static error is raised if a namespace URI is bound to the predefined
598              * prefix xmlns, or if a namespace URI other than http://www.w3.org/XML/1998/namespace
599              * is bound to the prefix xml, or if the prefix xml is bound to
600              * a namespace URI other than http://www.w3.org/XML/1998/namespace.
601              */
602             XQST0070,
603
604             /**
605              * A static error is raised if the namespace declaration attributes
606              * of a direct element constructor do not have distinct names.
607              */
608             XQST0071,
609
610             /**
611              * It is a dynamic error if the result of the content expression
612              * of a computed comment constructor contains two adjacent hyphens
613              * or ends with a hyphen.
614              */
615             XQDY0072,
616
617             /**
618              * It is a static error if the graph of module imports contains
619              * a cycle (that is, if there exists a sequence of modules M1 ...
620              * Mn such that each Mi imports Mi+1 and Mn imports M1), unless
621              * all the modules in the cycle share a common namespace.
622              */
623             XQST0073,
624
625             /**
626              * It is a dynamic error if the value of the name expression in
627              * a computed element or attribute constructor cannot be converted
628              * to an expanded QName (for example, because it contains a namespace
629              * prefix not found in statically known namespaces.)
630              */
631             XQDY0074,
632
633             /**
634              * An implementation that does not support the Validation Feature
635              * must raise a static error if it encounters a validate expression.
636              */
637             XQST0075,
638
639             /**
640              * It is a static error if a collation subclause in an order by
641              * clause of a FLWOR expression does not identify a collation that
642              * is present in statically known collations.
643              */
644             XQST0076,
645
646             /**
647              * (Not currently used.)
648              */
649             XQST0077,
650
651             /**
652              * (Not currently used.)
653              */
654             XQST0078,
655
656             /**
657              * It is a static error if an extension expression contains neither
658              * a pragma that is recognized by the implementation nor an expression
659              * enclosed in curly braces.
660              */
661             XQST0079,
662
663             /**
664              * It is a static error if the target type of a cast or castable
665              * expression is xs:NOTATION or xs:anyAtomicType.
666              */
667             XPST0080,
668
669             /**
670              * It is a static error if a QName used in a query contains a namespace
671              * prefix that cannot be expanded into a namespace URI by using
672              * the statically known namespaces.
673              */
674             XPST0081,
675
676             /**
677              * (Not currently used.)
678              */
679             XQST0082,
680
681             /**
682              * (Not currently used.)
683              */
684             XPST0083,
685
686             /**
687              * It is a dynamic error if the element validated by a validate
688              * statement does not have a top-level element declaration in the
689              * in-scope element declarations, if validation mode is strict.
690              */
691             XQDY0084,
692
693             /**
694              * It is a static error if the namespace URI in a namespace declaration
695              * attribute is a zero-length string, and the implementation does
696              * not support [XML Names 1.1].
697              */
698             XQST0085,
699
700             /**
701              * It is a type error if the typed value of a copied element or
702              * attribute node is namespace-sensitive when construction mode
703              * is preserve and copy-namespaces mode is no-preserve.
704              */
705             XQTY0086,
706
707             /**
708              * It is a static error if the encoding specified in a Version Declaration
709              * does not conform to the definition of EncName specified in [XML
710              * 1.0].
711              */
712             XQST0087,
713
714             /**
715              * It is a static error if the literal that specifies the target
716              * namespace in a module import or a module declaration is of zero
717              * length.
718              */
719             XQST0088,
720
721             /**
722              * It is a static error if a variable bound in a for clause of a
723              * FLWOR expression, and its associated positional variable, do
724              * not have distinct names (expanded QNames).
725              */
726             XQST0089,
727
728             /**
729              * It is a static error if a character reference does not identify
730              * a valid character in the version of XML that is in use.
731              */
732             XQST0090,
733
734             /**
735              * An implementation MAY raise a dynamic error if an xml:id error,
736              * as defined in [XML ID], is encountered during construction of
737              * an attribute named xml:id.
738              */
739             XQDY0091,
740
741             /**
742              * An implementation MAY raise a dynamic error if a constructed
743              * attribute named xml:space has a value other than preserve or
744              * default.
745              */
746             XQDY0092,
747
748             /**
749              * It is a static error to import a module M1 if there exists a
750              * sequence of modules M1 ... Mi ... M1 such that each module directly
751              * depends on the next module in the sequence (informally, if M1
752              * depends on itself through some chain of module dependencies.)
753              */
754             XQST0093,
755
756             /**
757              * Unidentified error.
758              */
759             FOER0000,
760
761             /**
762              * Division by zero.
763              */
764             FOAR0001,
765
766             /**
767              * Numeric operation overflow/underflow.
768              */
769             FOAR0002,
770
771             /**
772              * Input value too large for decimal.
773              */
774             FOCA0001,
775
776             /**
777              * Invalid lexical value.
778              */
779             FOCA0002,
780
781             /**
782              * Input value too large for integer.
783              */
784             FOCA0003,
785
786             /**
787              * NaN supplied as float/double value.
788              */
789             FOCA0005,
790
791             /**
792              * String to be cast to decimal has too many digits of precision.
793              */
794             FOCA0006,
795
796             /**
797              * Code point not valid.
798              */
799             FOCH0001,
800
801             /**
802              * Unsupported collation.
803              */
804             FOCH0002,
805
806             /**
807              * Unsupported normalization form.
808              */
809             FOCH0003,
810
811             /**
812              * Collation does not support collation units.
813              */
814             FOCH0004,
815
816             /**
817              * No context document.
818              */
819             FODC0001,
820
821             /**
822              * Error retrieving resource.
823              */
824             FODC0002,
825
826             /**
827              * Function stability not defined.
828              */
829             FODC0003,
830
831             /**
832              * Invalid argument to fn:collection.
833              */
834             FODC0004,
835
836             /**
837              * Invalid argument to fn:doc or fn:doc-available.
838              */
839             FODC0005,
840
841             /**
842              * Overflow/underflow in date/time operation.
843              */
844             FODT0001,
845
846             /**
847              * Overflow/underflow in duration operation.
848              */
849             FODT0002,
850
851             /**
852              * Invalid timezone value.
853              */
854             FODT0003,
855
856             /**
857              * No namespace found for prefix.
858              */
859             FONS0004,
860
861             /**
862              * Base-uri not defined in the static context.
863              */
864             FONS0005,
865
866             /**
867              * Invalid value for cast/constructor.
868              */
869             FORG0001,
870
871             /**
872              * Invalid argument to fn:resolve-uri().
873              */
874             FORG0002,
875
876             /**
877              * fn:zero-or-one called with a sequence containing more than one
878              * item.
879              */
880             FORG0003,
881
882             /**
883              * fn:one-or-more called with a sequence containing no items.
884              */
885             FORG0004,
886
887             /**
888              * fn:exactly-one called with a sequence containing zero or more
889              * than one item.
890              */
891             FORG0005,
892
893             /**
894              * Invalid argument type.
895              */
896             FORG0006,
897
898             /**
899              * Both arguments to fn:dateTime have a specified timezone.
900              */
901             FORG0008,
902
903             /**
904              * Error in resolving a relative URI against a base URI in fn:resolve-uri.
905              */
906             FORG0009,
907
908             /**
909              * Invalid regular expression. flags
910              */
911             FORX0001,
912
913             /**
914              * Invalid regular expression.
915              */
916             FORX0002,
917
918             /**
919              * Regular expression matches zero-length string.
920              */
921             FORX0003,
922
923             /**
924              * Invalid replacement string.
925              */
926             FORX0004,
927
928             /**
929              * Argument node does not have a typed value.
930              */
931             FOTY0012,
932
933             /**
934              * It is an error if an item in S6 in sequence normalization is
935              * an attribute node or a namespace node.
936              */
937             SENR0001,
938
939             /**
940              * It is an error if the serializer is unable to satisfy the rules
941              * for either a well-formed XML document entity or a well-formed
942              * XML external general parsed entity, or both, except for content
943              * modified by the character expansion phase of serialization.
944              */
945             SERE0003,
946
947             /**
948              * It is an error to specify the doctype-system parameter, or to
949              * specify the standalone parameter with a value other than omit,
950              * if the instance of the data model contains text nodes or multiple
951              * element nodes as children of the root node.
952              */
953             SEPM0004,
954
955             /**
956              * It is an error if the serialized result would contain an NCName
957              * Names that contains a character that is not permitted by the
958              * version of Namespaces in XML specified by the version parameter.
959              */
960             SERE0005,
961
962             /**
963              * It is an error if the serialized result would contain a character
964              * that is not permitted by the version of XML specified by the
965              * version parameter.
966              */
967             SERE0006,
968
969             /**
970              * It is an error if an output encoding other than UTF-8 or UTF-16
971              * is requested and the serializer does not support that encoding.
972              */
973             SESU0007,
974
975             /**
976              * It is an error if a character that cannot be represented in the
977              * encoding that the serializer is using for output appears in a
978              * context where character references are not allowed (for example
979              * if the character occurs in the name of an element).
980              */
981             SERE0008,
982
983             /**
984              * It is an error if the omit-xml-declaration parameter has the
985              * value yes, and the standalone attribute has a value other than
986              * omit; or the version parameter has a value other than 1.0 and
987              * the doctype-system parameter is specified.
988              */
989             SEPM0009,
990
991             /**
992              * It is an error if the output method is xml, the value of the
993              * undeclare-prefixes parameter is yes, and the value of the version
994              * parameter is 1.0.
995              */
996             SEPM0010,
997
998             /**
999              * It is an error if the value of the normalization-form parameter
1000              * specifies a normalization form that is not supported by the serializer.
1001              */
1002             SESU0011,
1003
1004             /**
1005              * It is an error if the value of the normalization-form parameter
1006              * is fully-normalized and any relevant construct of the result
1007              * begins with a combining character.
1008              */
1009             SERE0012,
1010
1011             /**
1012              * It is an error if the serializer does not support the version
1013              * of XML or HTML specified by the version parameter.
1014              */
1015             SESU0013,
1016
1017             /**
1018              * It is an error to use the HTML output method when characters
1019              * which are legal in XML but not in HTML, specifically the control
1020              * characters \#x7F-#x9F, appear in the instance of the data model.
1021              */
1022             SERE0014,
1023
1024             /**
1025              * It is an error to use the HTML output method when &gt; appears within
1026              * a processing instruction in the data model instance being serialized.
1027              */
1028             SERE0015,
1029
1030             /**
1031              * It is a an error if a parameter value is invalid for the defined
1032              * domain.
1033              */
1034             SEPM0016,
1035
1036             /**
1037              * A static error is signaled if an XSLT-defined element is used
1038              * in a context where it is not permitted, if a required attribute
1039              * is omitted, or if the content of the element does not correspond
1040              * to the content that is allowed for the element.
1041              */
1042             XTSE0010,
1043
1044             /**
1045              * It is a static error if an attribute (other than an attribute
1046              * written using curly brackets in a position where an attribute
1047              * value template is permitted) contains a value that is not one
1048              * of the permitted values for that attribute.
1049              */
1050             XTSE0020,
1051
1052             /**
1053              * It is a static error to use a reserved namespace in the name
1054              * of a named template, a mode, an attribute set, a key, a decimal-format,
1055              * a variable or parameter, a stylesheet function, a named output
1056              * definition, or a character map.
1057              */
1058             XTSE0080,
1059
1060             /**
1061              * It is a static error for an element from the XSLT namespace to
1062              * have an attribute whose namespace is either null (that is, an
1063              * attribute with an unprefixed name) or the XSLT namespace, other
1064              * than attributes defined for the element in this document.
1065              */
1066             XTSE0090,
1067
1068             /**
1069              * The value of the version attribute must be a number: specifically,
1070              * it must be a a valid instance of the type xs:decimal as defined
1071              * in [XML Schema Part 2].
1072              */
1073             XTSE0110,
1074
1075             /**
1076              * An xsl:stylesheet element must not have any text node children.
1077              */
1078             XTSE0120,
1079
1080             /**
1081              * It is a static error if the value of an [xsl:]default-collation
1082              * attribute, after resolving against the base URI, contains no
1083              * URI that the implementation recognizes as a collation URI.
1084              */
1085             XTSE0125,
1086
1087             /**
1088              * It is a static error if the xsl:stylesheet element has a child
1089              * element whose name has a null namespace URI.
1090              */
1091             XTSE0130,
1092
1093             /**
1094              * A literal result element that is used as the outermost element
1095              * of a simplified stylesheet module must have an xsl:version attribute.
1096              */
1097             XTSE0150,
1098
1099             /**
1100              * It is a static error if the processor is not able to retrieve
1101              * the resource identified by the URI reference [ in the href attribute
1102              * of xsl:include or xsl:import] , or if the resource that is retrieved
1103              * does not contain a stylesheet module conforming to this specification.
1104              */
1105             XTSE0165,
1106
1107             /**
1108              * An xsl:include element must be a top-level element.
1109              */
1110             XTSE0170,
1111
1112             /**
1113              * It is a static error if a stylesheet module directly or indirectly
1114              * includes itself.
1115              */
1116             XTSE0180,
1117
1118             /**
1119              * An xsl:import element must be a top-level element.
1120              */
1121             XTSE0190,
1122
1123             /**
1124              * The xsl:import element children must precede all other element
1125              * children of an xsl:stylesheet element, including any xsl:include
1126              * element children and any user-defined data elements.
1127              */
1128             XTSE0200,
1129
1130             /**
1131              * It is a static error if a stylesheet module directly or indirectly
1132              * imports itself.
1133              */
1134             XTSE0210,
1135
1136             /**
1137              * It is a static error if an xsl:import-schema element that contains
1138              * an xs:schema element has a schema-location attribute, or if it
1139              * has a namespace attribute that conflicts with the target namespace
1140              * of the contained schema.
1141              */
1142             XTSE0215,
1143
1144             /**
1145              * It is a static error if the synthetic schema document does not
1146              * satisfy the constraints described in [XML Schema Part 1] (section
1147              * 5.1, Errors in Schema Construction and Structure). This includes,
1148              * without loss of generality, conflicts such as multiple definitions
1149              * of the same name.
1150              */
1151             XTSE0220,
1152
1153             /**
1154              * Within an XSLT element that is required to be empty, any content
1155              * other than comments or processing instructions, including any
1156              * whitespace text node preserved using the xml:space="preserve"
1157              * attribute, is a static error.
1158              */
1159             XTSE0260,
1160
1161             /**
1162              * It is a static error if there is a stylesheet module in the stylesheet
1163              * that specifies input-type-annotations="strip" and another stylesheet
1164              * module that specifies input-type-annotations="preserve".
1165              */
1166             XTSE0265,
1167
1168             /**
1169              * In the case of a prefixed QName used as the value of an attribute
1170              * in the stylesheet, or appearing within an XPath expression in
1171              * the stylesheet, it is a static error if the defining element
1172              * has no namespace node whose name matches the prefix of the QName.
1173              */
1174             XTSE0280,
1175
1176             /**
1177              * Where an attribute is defined to contain a pattern, it is a static
1178              * error if the pattern does not match the production Pattern.
1179              */
1180             XTSE0340,
1181
1182             /**
1183              * It is a static error if an unescaped left curly bracket appears
1184              * in a fixed part of an attribute value template without a matching
1185              * right curly bracket.
1186              */
1187             XTSE0350,
1188
1189             /**
1190              * It is a static error if an unescaped right curly bracket occurs
1191              * in a fixed part of an attribute value template.
1192              */
1193             XTSE0370,
1194
1195             /**
1196              * An xsl:template element must have either a match attribute or
1197              * a name attribute, or both. An xsl:template element that has no
1198              * match attribute must have no mode attribute and no priority attribute.
1199              */
1200             XTSE0500,
1201
1202             /**
1203              * The value of this attribute [the priority attribute of the xsl:template
1204              * element] must conform to the rules for the xs:decimal type defined
1205              * in [XML Schema Part 2]. Negative values are permitted..
1206              */
1207             XTSE0530,
1208
1209             /**
1210              * It is a static error if the list [of modes in the mode attribute
1211              * of xsl:template] is empty, if the same token is included more
1212              * than once in the list, if the list contains an invalid token,
1213              * or if the token \#all appears together with any other value.
1214              */
1215             XTSE0550,
1216
1217             /**
1218              * It is a static error if two parameters of a template or of a
1219              * stylesheet function have the same name.
1220              */
1221             XTSE0580,
1222
1223             /**
1224              * It is a static error if a variable-binding element has a select
1225              * attribute and has non-empty content.
1226              */
1227             XTSE0620,
1228
1229             /**
1230              * It is a static error if a stylesheet contains more than one binding
1231              * of a global variable with the same name and same import precedence,
1232              * unless it also contains another binding with the same name and
1233              * higher import precedence.
1234              */
1235             XTSE0630,
1236
1237             /**
1238              * It is a static error if a stylesheet contains an xsl:call-template
1239              * instruction whose name attribute does not match the name attribute
1240              * of any xsl:template in the stylesheet.
1241              */
1242             XTSE0650,
1243
1244             /**
1245              * It is a static error if a stylesheet contains more than one template
1246              * with the same name and the same import precedence, unless it
1247              * also contains a template with the same name and higher import
1248              * precedence.
1249              */
1250             XTSE0660,
1251
1252             /**
1253              * It is a static error if a single xsl:call-template, xsl:apply-templates,
1254              * xsl:apply-imports, or xsl:next-match element contains two or
1255              * more xsl:with-param elements with matching name attributes.
1256              */
1257             XTSE0670,
1258
1259             /**
1260              * In the case of xsl:call-template, it is a static error to pass
1261              * a non-tunnel parameter named x to a template that does not have
1262              * a template parameter named x, unless backwards compatible behavior
1263              * is enabled for the xsl:call-template instruction.
1264              */
1265             XTSE0680,
1266
1267             /**
1268              * It is a static error if a template that is invoked using xsl:call-template
1269              * declares a template parameter specifying required="yes" and not
1270              * specifying tunnel="yes", if no value for this parameter is supplied
1271              * by the calling instruction.
1272              */
1273             XTSE0690,
1274
1275             /**
1276              * It is a static error if the value of the use-attribute-sets attribute
1277              * of an xsl:copy, xsl:element, or xsl:attribute-set element, or
1278              * the xsl:use-attribute-sets attribute of a literal result element,
1279              * is not a whitespace-separated sequence of QNames, or if it contains
1280              * a QName that does not match the name attribute of any xsl:attribute-set
1281              * declaration in the stylesheet.
1282              */
1283             XTSE0710,
1284
1285             /**
1286              * It is a static error if an xsl:attribute-set element directly
1287              * or indirectly references itself via the names contained in the
1288              * use-attribute-sets attribute.
1289              */
1290             XTSE0720,
1291
1292             /**
1293              * A stylesheet function must have a prefixed name, to remove any
1294              * risk of a clash with a function in the default function namespace.
1295              * It is a static error if the name has no prefix.
1296              */
1297             XTSE0740,
1298
1299             /**
1300              * Because arguments to a stylesheet function call must all be specified,
1301              * the xsl:param elements within an xsl:function element must not
1302              * specify a default value: this means they must be empty, and must
1303              * not have a select attribute.
1304              */
1305             XTSE0760,
1306
1307             /**
1308              * It is a static error for a stylesheet to contain two or more
1309              * functions with the same expanded-QName, the same arity, and the
1310              * same import precedence, unless there is another function with
1311              * the same expanded-QName and arity, and a higher import precedence.
1312              */
1313             XTSE0770,
1314
1315             /**
1316              * It is a static error if an attribute on a literal result element
1317              * is in the XSLT namespace, unless it is one of the attributes
1318              * explicitly defined in this specification.
1319              */
1320             XTSE0805,
1321
1322             /**
1323              * It is a static error if a namespace prefix is used within the
1324              * [xsl:]exclude-result-prefixes attribute and there is no namespace
1325              * binding in scope for that prefix.
1326              */
1327             XTSE0808,
1328
1329             /**
1330              * It is a static error if the value \#default is used within the
1331              * [xsl:]exclude-result-prefixes attribute and the parent element
1332              * of the [xsl:]exclude-result-prefixes attribute has no default
1333              * namespace.
1334              */
1335             XTSE0809,
1336
1337             /**
1338              * It is a static error if there is more than one such declaration
1339              * [more than one xsl:namespace-alias declaration] with the same
1340              * literal namespace URI and the same import precedence and different
1341              * values for the target namespace URI, unless there is also an
1342              * xsl:namespace-alias declaration with the same literal namespace
1343              * URI and a higher import precedence.
1344              */
1345             XTSE0810,
1346
1347             /**
1348              * It is a static error if a value other than \#default is specified
1349              * for either the stylesheet-prefix or the result-prefix attributes
1350              * of the xsl:namespace-alias element when there is no in-scope
1351              * binding for that namespace prefix.
1352              */
1353             XTSE0812,
1354
1355             /**
1356              * It is a static error if the select attribute of the xsl:attribute
1357              * element is present unless the element has empty content.
1358              */
1359             XTSE0840,
1360
1361             /**
1362              * It is a static error if the select attribute of the xsl:value-of
1363              * element is present when the content of the element is non-empty,
1364              * or if the select attribute is absent when the content is empty.
1365              */
1366             XTSE0870,
1367
1368             /**
1369              * It is a static error if the select attribute of the xsl:processing-instruction
1370              * element is present unless the element has empty content.
1371              */
1372             XTSE0880,
1373
1374             /**
1375              * It is a static error if the select attribute of the xsl:namespace
1376              * element is present when the element has content other than one
1377              * or more xsl:fallback instructions, or if the select attribute
1378              * is absent when the element has empty content.
1379              */
1380             XTSE0910,
1381
1382             /**
1383              * It is a static error if the select attribute of the xsl:comment
1384              * element is present unless the element has empty content.
1385              */
1386             XTSE0940,
1387
1388             /**
1389              * It is a type error to use the xsl:copy or xsl:copy-of instruction
1390              * to copy a node that has namespace-sensitive content if the copy-namespaces
1391              * attribute has the value no and its explicit or implicit validation
1392              * attribute has the value preserve. It is also a type error if
1393              * either of these instructions (with validation="preserve") is
1394              * used to copy an attribute having namespace-sensitive content,
1395              * unless the parent element is also copied. A node has namespace-sensitive
1396              * content if its typed value contains an item of type xs:QName
1397              * or xs:NOTATION or a type derived therefrom. The reason this is
1398              * an error is because the validity of the content depends on the
1399              * namespace context being preserved.
1400              */
1401             XTTE0950,
1402
1403             /**
1404              * It is a static error if the value attribute of xsl:number is
1405              * present unless the select, level, count, and from attributes
1406              * are all absent.
1407              */
1408             XTSE0975,
1409
1410             /**
1411              * It is a static error if an xsl:sort element with a select attribute
1412              * has non-empty content.
1413              */
1414             XTSE1015,
1415
1416             /**
1417              * It is a static error if an xsl:sort element other than the first
1418              * in a sequence of sibling xsl:sort elements has a stable attribute.
1419              */
1420             XTSE1017,
1421
1422             /**
1423              * It is a static error if an xsl:perform-sort instruction with
1424              * a select attribute has any content other than xsl:sort and xsl:fallback
1425              * instructions.
1426              */
1427             XTSE1040,
1428
1429             /**
1430              * It is a static error if the current-group function is used within
1431              * a pattern.
1432              */
1433             XTSE1060,
1434
1435             /**
1436              * It is a static error if the current-grouping-key function is
1437              * used within a pattern.
1438              */
1439             XTSE1070,
1440
1441             /**
1442              * These four attributes [the group-by, group-adjacent, group-starting-with,
1443              * and group-ending-with attributes of xsl:for-each-group ] are
1444              * mutually exclusive: it is a static error if none of these four
1445              * attributes is present, or if more than one of them is present.
1446              */
1447             XTSE1080,
1448
1449             /**
1450              * It is an error to specify the collation attribute if neither
1451              * the group-by attribute nor group-adjacent attribute is specified.
1452              */
1453             XTSE1090,
1454
1455             /**
1456              * It is a static error if the xsl:analyze-string instruction contains
1457              * neither an xsl:matching-substring nor an xsl:non-matching-substring
1458              * element.
1459              */
1460             XTSE1130,
1461
1462             /**
1463              * It is a static error if an xsl:key declaration has a use attribute
1464              * and has non-empty content, or if it has empty content and no
1465              * use attribute.
1466              */
1467             XTSE1205,
1468
1469             /**
1470              * It is a static error if the xsl:key declaration has a collation
1471              * attribute whose value (after resolving against the base URI)
1472              * is not a URI recognized by the implementation as referring to
1473              * a collation.
1474              */
1475             XTSE1210,
1476
1477             /**
1478              * It is a static error if there are several xsl:key declarations
1479              * in the stylesheet with the same key name and different effective
1480              * collations. Two collations are the same if their URIs are equal
1481              * under the rules for comparing xs:anyURI values, or if the implementation
1482              * can determine that they are different URIs referring to the same
1483              * collation.
1484              */
1485             XTSE1220,
1486
1487             /**
1488              * It is a static error if a named or unnamed decimal format contains
1489              * two conflicting values for the same attribute in different xsl:decimal-format
1490              * declarations having the same import precedence, unless there
1491              * is another definition of the same attribute with higher import
1492              * precedence.
1493              */
1494             XTSE1290,
1495
1496             /**
1497              * It is a static error if the character specified in the zero-digit
1498              * attribute is not a digit or is a digit that does not have the
1499              * numeric value zero.
1500              */
1501             XTSE1295,
1502
1503             /**
1504              * It is a static error if, for any named or unnamed decimal format,
1505              * the variables representing characters used in a picture string
1506              * do not each have distinct values. These variables are decimal-separator-sign,
1507              * grouping-sign, percent-sign, per-mille-sign, digit-zero-sign,
1508              * digit-sign, and pattern-separator-sign.
1509              */
1510             XTSE1300,
1511
1512             /**
1513              * It is a static error if there is no namespace bound to the prefix
1514              * on the element bearing the [xsl:]extension-element-prefixes attribute
1515              * or, when \#default is specified, if there is no default namespace.
1516              */
1517             XTSE1430,
1518
1519             /**
1520              * It is a static error if both the [xsl:]type and [xsl:]validation
1521              * attributes are present on the xsl:element, xsl:attribute, xsl:copy,
1522              * xsl:copy-of, xsl:document, or xsl:result-document instructions,
1523              * or on a literal result element.
1524              */
1525             XTSE1505,
1526
1527             /**
1528              * It is a static error if the value of the type attribute of an
1529              * xsl:element, xsl:attribute, xsl:copy, xsl:copy-of, xsl:document,
1530              * or xsl:result-document instruction, or the xsl:type attribute
1531              * of a literal result element, is not a valid QName, or if it uses
1532              * a prefix that is not defined in an in-scope namespace declaration,
1533              * or if the QName is not the name of a type definition included
1534              * in the in-scope schema components for the stylesheet.
1535              */
1536             XTSE1520,
1537
1538             /**
1539              * It is a static error if the value of the type attribute of an
1540              * xsl:attribute instruction refers to a complex type definition
1541              */
1542             XTSE1530,
1543
1544             /**
1545              * It is a static error if two xsl:output declarations within an
1546              * output definition specify explicit values for the same attribute
1547              * (other than cdata-section-elements and use-character-maps), with
1548              * the values of the attributes being not equal, unless there is
1549              * another xsl:output declaration within the same output definition
1550              * that has higher import precedence and that specifies an explicit
1551              * value for the same attribute.
1552              */
1553             XTSE1560,
1554
1555             /**
1556              * The value [of the method attribute on xsl:output ] must (if present)
1557              * be a valid QName. If the QName does not have a prefix, then it
1558              * identifies a method specified in [XSLT and XQuery Serialization]
1559              * and must be one of xml, html, xhtml, or text.
1560              */
1561             XTSE1570,
1562
1563             /**
1564              * It is a static error if the stylesheet contains two or more character
1565              * maps with the same name and the same import precedence, unless
1566              * it also contains another character map with the same name and
1567              * higher import precedence.
1568              */
1569             XTSE1580,
1570
1571             /**
1572              * It is a static error if a name in the use-character-maps attribute
1573              * of the xsl:output or xsl:character-map elements does not match
1574              * the name attribute of any xsl:character-map in the stylesheet.
1575              */
1576             XTSE1590,
1577
1578             /**
1579              * It is a static error if a character map references itself, directly
1580              * or indirectly, via a name in the use-character-maps attribute.
1581              */
1582             XTSE1600,
1583
1584             /**
1585              * A basic XSLT processor must signal a static error if the stylesheet
1586              * includes an xsl:import-schema declaration.
1587              */
1588             XTSE1650,
1589
1590             /**
1591              * A basic XSLT processor must signal a static error if the stylesheet
1592              * includes an [xsl:]type attribute, or an [xsl:]validation or default-validation
1593              * attribute with a value other than strip.
1594              */
1595             XTSE1660,
1596
1597             /**
1598              * It is a type error if the result of evaluating the sequence constructor
1599              * cannot be converted to the required type.
1600              */
1601             XTTE0505,
1602
1603             /**
1604              * It is a type error if an xsl:apply-templates instruction with
1605              * no select attribute is evaluated when the context item is not
1606              * a node.
1607              */
1608             XTTE0510,
1609
1610             /**
1611              * It is a type error if the sequence returned by the select expression
1612              * [of xsl:apply-templates] contains an item that is not a node.
1613              */
1614             XTTE0520,
1615
1616             /**
1617              * It is a type error if the supplied value of a variable cannot
1618              * be converted to the required type.
1619              */
1620             XTTE0570,
1621
1622             /**
1623              * It is a type error if the conversion of the supplied value of
1624              * a parameter to its required type fails.
1625              */
1626             XTTE0590,
1627
1628             /**
1629              * If a default value is given explicitly, that is, if there is
1630              * either a select attribute or a non-empty sequence constructor,
1631              * then it is a type error if the default value cannot be converted
1632              * to the required type, using the function conversion rules.
1633              */
1634             XTTE0600,
1635
1636             /**
1637              * If the as attribute [of xsl:function ] is specified, then the
1638              * result evaluated by the sequence constructor (see 5.7 Sequence
1639              * Constructors) is converted to the required type, using the function
1640              * conversion rules. It is a type error if this conversion fails.
1641              */
1642             XTTE0780,
1643
1644             /**
1645              * If the value of a parameter to a stylesheet function cannot be
1646              * converted to the required type, a type error is signaled.
1647              */
1648             XTTE0790,
1649
1650             /**
1651              * It is a type error if the xsl:number instruction is evaluated,
1652              * with no value or select attribute, when the context item is not
1653              * a node.
1654              */
1655             XTTE0990,
1656
1657             /**
1658              * It is a type error if the result of evaluating the select attribute
1659              * of the xsl:number instruction is anything other than a single
1660              * node.
1661              */
1662             XTTE1000,
1663
1664             /**
1665              * If any sort key value, after atomization and any type conversion
1666              * required by the data-type attribute, is a sequence containing
1667              * more than one item, then the effect depends on whether the xsl:sort
1668              * element is evaluated with backwards compatible behavior. With
1669              * backwards compatible behavior, the effective sort key value is
1670              * the first item in the sequence. In other cases, this is a type
1671              * error.
1672              */
1673             XTTE1020,
1674
1675             /**
1676              * It is a type error if the grouping key evaluated using the group-adjacent
1677              * attribute is an empty sequence, or a sequence containing more
1678              * than one item.
1679              */
1680             XTTE1100,
1681
1682             /**
1683              * When the group-starting-with or group-ending-with attribute [of
1684              * the xsl:for-each-group instruction] is used, it is a type error
1685              * if the result of evaluating the select expression contains an
1686              * item that is not a node.
1687              */
1688             XTTE1120,
1689
1690             /**
1691              * If the validation attribute of an xsl:element, xsl:attribute,
1692              * xsl:copy, xsl:copy-of, or xsl:result-document instruction, or
1693              * the xsl:validation attribute of a literal result element, has
1694              * the effective value strict, and schema validity assessment concludes
1695              * that the validity of the element or attribute is invalid or unknown,
1696              * a type error occurs. As with other type errors, the error may
1697              * be signaled statically if it can be detected statically.
1698              */
1699             XTTE1510,
1700
1701             /**
1702              * If the validation attribute of an xsl:element, xsl:attribute,
1703              * xsl:copy, xsl:copy-of, or xsl:result-document instruction, or
1704              * the xsl:validation attribute of a literal result element, has
1705              * the effective value strict, and there is no matching top-level
1706              * declaration in the schema, then a type error occurs. As with
1707              * other type errors, the error may be signaled statically if it
1708              * can be detected statically.
1709              */
1710             XTTE1512,
1711
1712             /**
1713              * If the validation attribute of an xsl:element, xsl:attribute,
1714              * xsl:copy, xsl:copy-of, or xsl:result-document instruction, or
1715              * the xsl:validation attribute of a literal result element, has
1716              * the effective value lax, and schema validity assessment concludes
1717              * that the element or attribute is invalid, a type error occurs.
1718              * As with other type errors, the error may be signaled statically
1719              * if it can be detected statically.
1720              */
1721             XTTE1515,
1722
1723             /**
1724              * It is a type error if an [xsl:]type attribute is defined for
1725              * a constructed element or attribute, and the outcome of schema
1726              * validity assessment against that type is that the validity property
1727              * of that element or attribute information item is other than valid.
1728              */
1729             XTTE1540,
1730
1731             /**
1732              * A type error occurs if a type or validation attribute is defined
1733              * (explicitly or implicitly) for an instruction that constructs
1734              * a new attribute node, if the effect of this is to cause the attribute
1735              * value to be validated against a type that is derived from, or
1736              * constructed by list or union from, the primitive types xs:QName
1737              * or xs:NOTATION.
1738              */
1739             XTTE1545,
1740
1741             /**
1742              * A type error occurs [when a document node is validated] unless
1743              * the children of the document node comprise exactly one element
1744              * node, no text nodes, and zero or more comment and processing
1745              * instruction nodes, in any order.
1746              */
1747             XTTE1550,
1748
1749             /**
1750              * It is a type error if, when validating a document node, document-level
1751              * constraints are not satisfied. These constraints include identity
1752              * constraints (xs:unique, xs:key, and xs:keyref) and ID/IDREF constraints.
1753              */
1754             XTTE1555,
1755
1756             /**
1757              * It is a non-recoverable dynamic error if the effective value
1758              * of an attribute written using curly brackets, in a position where
1759              * an attribute value template is permitted, is a value that is
1760              * not one of the permitted values for that attribute. If the processor
1761              * is able to detect the error statically (for example, when any
1762              * XPath expressions within the curly brackets can be evaluated
1763              * statically), then the processor may optionally signal this as
1764              * a static error.
1765              */
1766             XTDE0030,
1767
1768             /**
1769              * It is a non-recoverable dynamic error if the invocation of the
1770              * stylesheet specifies a template name that does not match the
1771              * expanded-QName of a named template defined in the stylesheet.
1772              */
1773             XTDE0040,
1774
1775             /**
1776              * It is a non-recoverable dynamic error if the invocation of the
1777              * stylesheet specifies an initial mode (other than the default
1778              * mode) that does not match the expanded-QName in the mode attribute
1779              * of any template defined in the stylesheet.
1780              */
1781             XTDE0045,
1782
1783             /**
1784              * It is a non-recoverable dynamic error if the invocation of the
1785              * stylesheet specifies both an initial mode and an initial template.
1786              */
1787             XTDE0047,
1788
1789             /**
1790              * It is a non-recoverable dynamic error if the stylesheet that
1791              * is invoked declares a visible stylesheet parameter with required="yes"
1792              * and no value for this parameter is supplied during the invocation
1793              * of the stylesheet. A stylesheet parameter is visible if it is
1794              * not masked by another global variable or parameter with the same
1795              * name and higher import precedence.
1796              */
1797             XTDE0050,
1798
1799             /**
1800              * It is a non-recoverable dynamic error if the initial template
1801              * defines a template parameter that specifies required="yes".
1802              */
1803             XTDE0060,
1804
1805             /**
1806              * If an implementation does not support backwards-compatible behavior,
1807              * then it is a non-recoverable dynamic error if any element is
1808              * evaluated that enables backwards-compatible behavior.
1809              */
1810             XTDE0160,
1811
1812             /**
1813              * It is a recoverable dynamic error if this [the process of finding
1814              * an xsl:strip-space or xsl:preserve-space declaration to match
1815              * an element in the source document] leaves more than one match,
1816              * unless all the matched declarations are equivalent (that is,
1817              * they are all xsl:strip-space or they are all xsl:preserve-space).
1818              * Action: The optional recovery action is to select, from the matches
1819              * that are left, the one that occurs last in declaration order.
1820              */
1821             XTRE0270,
1822
1823             /**
1824              * Where the result of evaluating an XPath expression (or an attribute
1825              * value template) is required to be a lexical QName, then unless
1826              * otherwise specified it is a non-recoverable dynamic error if
1827              * the defining element has no namespace node whose name matches
1828              * the prefix of the lexical QName. This error may be signaled as
1829              * a static error if the value of the expression can be determined
1830              * statically.
1831              */
1832             XTDE0290,
1833
1834             /**
1835              * It is a non-recoverable dynamic error if the result sequence
1836              * used to construct the content of an element node contains a namespace
1837              * node or attribute node that is preceded in the sequence by a
1838              * node that is neither a namespace node nor an attribute node.
1839              */
1840             XTDE0410,
1841
1842             /**
1843              * It is a non-recoverable dynamic error if the result sequence
1844              * used to construct the content of a document node contains a namespace
1845              * node or attribute node.
1846              */
1847             XTDE0420,
1848
1849             /**
1850              * It is a non-recoverable dynamic error if the result sequence
1851              * contains two or more namespace nodes having the same name but
1852              * different string values (that is, namespace nodes that map the
1853              * same prefix to different namespace URIs).
1854              */
1855             XTDE0430,
1856
1857             /**
1858              * It is a non-recoverable dynamic error if the result sequence
1859              * contains a namespace node with no name and the element node being
1860              * constructed has a null namespace URI (that is, it is an error
1861              * to define a default namespace when the element is in no namespace).
1862              */
1863             XTDE0440,
1864
1865             /**
1866              * It is a non-recoverable dynamic error if namespace fixup is performed
1867              * on an element that contains among the typed values of the element
1868              * and its attributes two values of type xs:QName or xs:NOTATION
1869              * containing conflicting namespace prefixes, that is, two values
1870              * that use the same prefix to refer to different namespace URIs.
1871              */
1872             XTDE0485,
1873
1874             /**
1875              * It is a recoverable dynamic error if the conflict resolution
1876              * algorithm for template rules leaves more than one matching template
1877              * rule. Action: The optional recovery action is to select, from
1878              * the matching template rules that are left, the one that occurs
1879              * last in declaration order.
1880              */
1881             XTRE0540,
1882
1883             /**
1884              * It is a non-recoverable dynamic error if xsl:apply-imports or
1885              * xsl:next-match is evaluated when the current template rule is
1886              * null.
1887              */
1888             XTDE0560,
1889
1890             /**
1891              * If an optional parameter has no select attribute and has an empty
1892              * sequence constructor, and if there is an as attribute, then the
1893              * default value of the parameter is an empty sequence. If the empty
1894              * sequence is not a valid instance of the required type defined
1895              * in the as attribute, then the parameter is treated as a required
1896              * parameter, which means that it is a non-recoverable dynamic error
1897              * if the caller supplies no value for the parameter.
1898              */
1899             XTDE0610,
1900
1901             /**
1902              * In general, a circularity in a stylesheet is a non-recoverable
1903              * dynamic error.
1904              */
1905             XTDE0640,
1906
1907             /**
1908              * In other cases, [with xsl:apply-templates, xsl:apply-imports,
1909              * and xsl:next-match, or xsl:call-template with tunnel parameters]
1910              * it is a non-recoverable dynamic error if the template that is
1911              * invoked declares a template parameter with required="yes" and
1912              * no value for this parameter is supplied by the calling instruction.
1913              */
1914             XTDE0700,
1915
1916             /**
1917              * It is a recoverable dynamic error if the name of a constructed
1918              * attribute is xml:space and the value is not either default or
1919              * preserve. Action: The optional recovery action is to construct
1920              * the attribute with the value as requested.
1921              */
1922             XTRE0795,
1923
1924             /**
1925              * It is a non-recoverable dynamic error if the effective value
1926              * of the name attribute [of the xsl:element instruction] is not
1927              * a lexical QName.
1928              */
1929             XTDE0820,
1930
1931             /**
1932              * In the case of an xsl:element instruction with no namespace attribute,
1933              * it is a non-recoverable dynamic error if the effective value
1934              * of the name attribute is a QName whose prefix is not declared
1935              * in an in-scope namespace declaration for the xsl:element instruction.
1936              */
1937             XTDE0830,
1938
1939             /**
1940              * It is a non-recoverable dynamic error if the effective value
1941              * of the namespace attribute [of the xsl:element instruction] is
1942              * not in the lexical space of the xs:anyURI data type.
1943              */
1944             XTDE0835,
1945
1946             /**
1947              * It is a non-recoverable dynamic error if the effective value
1948              * of the name attribute [of an xsl:attribute instruction] is not
1949              * a lexical QName.
1950              */
1951             XTDE0850,
1952
1953             /**
1954              * In the case of an xsl:attribute instruction with no namespace
1955              * attribute, it is a non-recoverable dynamic error if the effective
1956              * value of the name attribute is the string xmlns.
1957              */
1958             XTDE0855,
1959
1960             /**
1961              * In the case of an xsl:attribute instruction with no namespace
1962              * attribute, it is a non-recoverable dynamic error if the effective
1963              * value of the name attribute is a lexical QName whose prefix is
1964              * not declared in an in-scope namespace declaration for the xsl:attribute
1965              * instruction.
1966              */
1967             XTDE0860,
1968
1969             /**
1970              * It is a non-recoverable dynamic error if the effective value
1971              * of the namespace attribute [of the xsl:attribute instruction]
1972              * is not in the lexical space of the xs:anyURI data type.
1973              */
1974             XTDE0865,
1975
1976             /**
1977              * It is a non-recoverable dynamic error if the effective value
1978              * of the name attribute [of the xsl:processing-instruction instruction]
1979              * is not both an NCName Names and a PITarget XML.
1980              */
1981             XTDE0890,
1982
1983             /**
1984              * It is a non-recoverable dynamic error if the string value of
1985              * the new namespace node [created using xsl:namespace] is not valid
1986              * in the lexical space of the data type xs:anyURI. [see ERR XTDE0835]
1987              */
1988             XTDE0905,
1989
1990             /**
1991              * It is a non-recoverable dynamic error if the effective value
1992              * of the name attribute [of the xsl:namespace instruction] is neither
1993              * a zero-length string nor an NCName Names, or if it is xmlns.
1994              */
1995             XTDE0920,
1996
1997             /**
1998              * It is a non-recoverable dynamic error if the xsl:namespace instruction
1999              * generates a namespace node whose name is xml and whose string
2000              * value is not http://www.w3.org/XML/1998/namespace, or a namespace
2001              * node whose string value is http://www.w3.org/XML/1998/namespace
2002              * and whose name is not xml.
2003              */
2004             XTDE0925,
2005
2006             /**
2007              * It is a non-recoverable dynamic error if evaluating the select
2008              * attribute or the contained sequence constructor of an xsl:namespace
2009              * instruction results in a zero-length string.
2010              */
2011             XTDE0930,
2012
2013             /**
2014              * It is a non-recoverable dynamic error if any undiscarded item
2015              * in the atomized sequence supplied as the value of the value attribute
2016              * of xsl:number cannot be converted to an integer, or if the resulting
2017              * integer is less than 0 (zero).
2018              */
2019             XTDE0980,
2020
2021             /**
2022              * It is a non-recoverable dynamic error if, for any sort key component,
2023              * the set of sort key values evaluated for all the items in the
2024              * initial sequence, after any type conversion requested, contains
2025              * a pair of ordinary values for which the result of the XPath lt
2026              * operator is an error.
2027              */
2028             XTDE1030,
2029
2030             /**
2031              * It is a non-recoverable dynamic error if the collation attribute
2032              * of xsl:sort (after resolving against the base URI) is not a URI
2033              * that is recognized by the implementation as referring to a collation.
2034              */
2035             XTDE1035,
2036
2037             /**
2038              * It is a non-recoverable dynamic error if the collation URI specified
2039              * to xsl:for-each-group (after resolving against the base URI)
2040              * is a collation that is not recognized by the implementation.
2041              * (For notes, [see ERR XTDE1035].)
2042              */
2043             XTDE1110,
2044
2045             /**
2046              * It is a non-recoverable dynamic error if the effective value
2047              * of the regex attribute [of the xsl:analyze-string instruction]
2048              * does not conform to the required syntax for regular expressions,
2049              * as specified in [Functions and Operators]. If the regular expression
2050              * is known statically (for example, if the attribute does not contain
2051              * any expressions enclosed in curly brackets) then the processor
2052              * may signal the error as a static error.
2053              */
2054             XTDE1140,
2055
2056             /**
2057              * It is a non-recoverable dynamic error if the effective value
2058              * of the flags attribute [of the xsl:analyze-string instruction]
2059              * has a value other than the values defined in [Functions and Operators].
2060              * If the value of the attribute is known statically (for example,
2061              * if the attribute does not contain any expressions enclosed in
2062              * curly brackets) then the processor may signal the error as a
2063              * static error.
2064              */
2065             XTDE1145,
2066
2067             /**
2068              * It is a non-recoverable dynamic error if the effective value
2069              * of the regex attribute [of the xsl:analyze-string instruction]
2070              * is a regular expression that matches a zero-length string: or
2071              * more specifically, if the regular expression $r and flags $f
2072              * are such that matches("", $r, $f) returns true. If the regular
2073              * expression is known statically (for example, if the attribute
2074              * does not contain any expressions enclosed in curly brackets)
2075              * then the processor may signal the error as a static error.
2076              */
2077             XTDE1150,
2078
2079             /**
2080              * When a URI reference [supplied to the document function] contains
2081              * a fragment identifier, it is a recoverable dynamic error if the
2082              * media type is not one that is recognized by the processor, or
2083              * if the fragment identifier does not conform to the rules for
2084              * fragment identifiers for that media type, or if the fragment
2085              * identifier selects something other than a sequence of nodes (for
2086              * example, if it selects a range of characters within a text node).
2087              * Action: The optional recovery action is to ignore the fragment
2088              * identifier and return the document node.
2089              */
2090             XTRE1160,
2091
2092             /**
2093              * It is a non-recoverable dynamic error if a URI [supplied in the
2094              * first argument to the unparsed-text function] contains a fragment
2095              * identifier, or if it cannot be used to retrieve a resource containing
2096              * text.
2097              */
2098             XTDE1170,
2099
2100             /**
2101              * It is a non-recoverable dynamic error if a resource [retrieved
2102              * using the unparsed-text function] contains octets that cannot
2103              * be decoded into Unicode characters using the specified encoding,
2104              * or if the resulting characters are not permitted XML characters.
2105              * This includes the case where the processor does not support the
2106              * requested encoding.
2107              */
2108             XTDE1190,
2109
2110             /**
2111              * It is a non-recoverable dynamic error if the second argument
2112              * of the unparsed-text function is omitted and the processor cannot
2113              * infer the encoding using external information and the encoding
2114              * is not UTF-8.
2115              */
2116             XTDE1200,
2117
2118             /**
2119              * It is a non-recoverable dynamic error if the value [of the first
2120              * argument to the key function] is not a valid QName, or if there
2121              * is no namespace declaration in scope for the prefix of the QName,
2122              * or if the name obtained by expanding the QName is not the same
2123              * as the expanded name of any xsl:key declaration in the stylesheet.
2124              * If the processor is able to detect the error statically (for
2125              * example, when the argument is supplied as a string literal),
2126              * then the processor may optionally signal this as a static error.
2127              */
2128             XTDE1260,
2129
2130             /**
2131              * It is a non-recoverable dynamic error to call the key function
2132              * with two arguments if there is no context node, or if the root
2133              * of the tree containing the context node is not a document node;
2134              * or to call the function with three arguments if the root of the
2135              * tree containing the node supplied in the third argument is not
2136              * a document node.
2137              */
2138             XTDE1270,
2139
2140             /**
2141              * It is a non-recoverable dynamic error if the name specified as
2142              * the $decimal-format-name argument [ to the format-number function]
2143              * is not a valid QName, or if its prefix has not been declared
2144              * in an in-scope namespace declaration, or if the stylesheet does
2145              * not contain a declaration of a decimal-format with a matching
2146              * expanded-QName. If the processor is able to detect the error
2147              * statically (for example, when the argument is supplied as a string
2148              * literal), then the processor may optionally signal this as a
2149              * static error.
2150              */
2151             XTDE1280,
2152
2153             /**
2154              * The picture string [supplied to the format-number function] must
2155              * conform to the following rules. [ See full specification.] It
2156              * is a non-recoverable dynamic error if the picture string does
2157              * not satisfy these rules.
2158              */
2159             XTDE1310,
2160
2161             /**
2162              * It is a non-recoverable dynamic error if the syntax of the picture
2163              * [used for date/time formatting] is incorrect.
2164              */
2165             XTDE1340,
2166
2167             /**
2168              * It is a non-recoverable dynamic error if a component specifier
2169              * within the picture [used for date/time formatting] refers to
2170              * components that are not available in the given type of $value,
2171              * for example if the picture supplied to the format-time refers
2172              * to the year, month, or day component.
2173              */
2174             XTDE1350,
2175
2176             /**
2177              * If the current function is evaluated within an expression that
2178              * is evaluated when the context item is undefined, a non-recoverable
2179              * dynamic error occurs.
2180              */
2181             XTDE1360,
2182
2183             /**
2184              * It is a non-recoverable dynamic error if the unparsed-entity-uri
2185              * function is called when there is no context node, or when the
2186              * root of the tree containing the context node is not a document
2187              * node.
2188              */
2189             XTDE1370,
2190
2191             /**
2192              * It is a non-recoverable dynamic error if the unparsed-entity-public-id
2193              * function is called when there is no context node, or when the
2194              * root of the tree containing the context node is not a document
2195              * node.
2196              */
2197             XTDE1380,
2198
2199             /**
2200              * It is a non-recoverable dynamic error if the value [supplied
2201              * as the $property-name argument to the system-property function]
2202              * is not a valid QName, or if there is no namespace declaration
2203              * in scope for the prefix of the QName. If the processor is able
2204              * to detect the error statically (for example, when the argument
2205              * is supplied as a string literal), then the processor may optionally
2206              * signal this as a static error.
2207              */
2208             XTDE1390,
2209
2210             /**
2211              * When a transformation is terminated by use of xsl:message terminate="yes",
2212              * the effect is the same as when a non-recoverable dynamic error
2213              * occurs during the transformation.
2214              */
2215             XTMM9000,
2216
2217             /**
2218              * It is a non-recoverable dynamic error if the argument [passed
2219              * to the function-available function] does not evaluate to a string
2220              * that is a valid QName, or if there is no namespace declaration
2221              * in scope for the prefix of the QName. If the processor is able
2222              * to detect the error statically (for example, when the argument
2223              * is supplied as a string literal), then the processor may optionally
2224              * signal this as a static error.
2225              */
2226             XTDE1400,
2227
2228             /**
2229              * It is a non-recoverable dynamic error if the arguments supplied
2230              * to a call on an extension function do not satisfy the rules defined
2231              * for that particular extension function, or if the extension function
2232              * reports an error, or if the result of the extension function
2233              * cannot be converted to an XPath value.
2234              */
2235             XTDE1420,
2236
2237             /**
2238              * When backwards compatible behavior is enabled, it is a non-recoverable
2239              * dynamic error to evaluate an extension function call if no implementation
2240              * of the extension function is available.
2241              */
2242             XTDE1425,
2243
2244             /**
2245              * It is a non-recoverable dynamic error if the argument [passed
2246              * to the type-available function] does not evaluate to a string
2247              * that is a valid QName, or if there is no namespace declaration
2248              * in scope for the prefix of the QName. If the processor is able
2249              * to detect the error statically (for example, when the argument
2250              * is supplied as a string literal), then the processor may optionally
2251              * signal this as a static error.
2252              */
2253             XTDE1428,
2254
2255             /**
2256              * It is a non-recoverable dynamic error if the argument [passed
2257              * to the element-available function] does not evaluate to a string
2258              * that is a valid QName, or if there is no namespace declaration
2259              * in scope for the prefix of the QName. If the processor is able
2260              * to detect the error statically (for example, when the argument
2261              * is supplied as a string literal), then the processor may optionally
2262              * signal this as a static error.
2263              */
2264             XTDE1440,
2265
2266             /**
2267              * When a processor performs fallback for an extension instruction
2268              * that is not recognized, if the instruction element has one or
2269              * more xsl:fallback children, then the content of each of the xsl:fallback
2270              * children must be evaluated; it is a non-recoverable dynamic error
2271              * if it has no xsl:fallback children.
2272              */
2273             XTDE1450,
2274
2275             /**
2276              * It is a non-recoverable dynamic error if the effective value
2277              * of the format attribute [of an xsl:result-document element] is
2278              * not a valid lexical QName, or if it does not match the expanded-QName
2279              * of an output definition in the stylesheet. If the processor is
2280              * able to detect the error statically (for example, when the format
2281              * attribute contains no curly brackets), then the processor may
2282              * optionally signal this as a static error.
2283              */
2284             XTDE1460,
2285
2286             /**
2287              * It is a non-recoverable dynamic error to evaluate the xsl:result-document
2288              * instruction in temporary output state.
2289              */
2290             XTDE1480,
2291
2292             /**
2293              * It is a non-recoverable dynamic error for a transformation to
2294              * generate two or more final result trees with the same URI.
2295              */
2296             XTDE1490,
2297
2298             /**
2299              * It is a recoverable dynamic error for a transformation to generate
2300              * two or more final result trees with URIs that identify the same
2301              * physical resource. The optional recovery action is implementation-dependent,
2302              * since it may be impossible for the processor to detect the error.
2303              */
2304             XTRE1495,
2305
2306             /**
2307              * It is a recoverable dynamic error for a stylesheet to write to
2308              * an external resource and read from the same resource during a
2309              * single transformation, whether or not the same URI is used to
2310              * access the resource in both cases. Action: The optional recovery
2311              * action is implementation-dependent: implementations are not required
2312              * to detect the error condition. Note that if the error is not
2313              * detected, it is undefined whether the document that is read from
2314              * the resource reflects its state before or after the result tree
2315              * is written.
2316              */
2317             XTRE1500,
2318
2319             /**
2320              * It is a recoverable dynamic error if an xsl:value-of or xsl:text
2321              * instruction specifies that output escaping is to be disabled
2322              * and the implementation does not support this. Action: The optional
2323              * recovery action is to ignore the disable-output-escaping attribute.
2324              */
2325             XTRE1620,
2326
2327             /**
2328              * It is a recoverable dynamic error if an xsl:value-of or xsl:text
2329              * instruction specifies that output escaping is to be disabled
2330              * when writing to a final result tree that is not being serialized.
2331              * Action: The optional recovery action is to ignore the disable-output-escaping
2332              * attribute.
2333              */
2334             XTRE1630,
2335
2336             /**
2337              * A basic XSLT processor must raise a non-recoverable dynamic error
2338              * if the input to the processor includes a node with a type annotation
2339              * other than xs:untyped or xs:untypedAtomic, or an atomic value
2340              * of a type other than those which a basic XSLT processor supports.
2341              */
2342             XTDE1665
2343
2344         };
2345
2346         /**
2347          * Issues a warning, should not be used excessively. This can
2348          * be used to communicate that a certain implementation defined
2349          * feature is unsupported or that a certain expression most likely
2350          * doesn't do what the users wants, to name a few examples.
2351          *
2352          * @see <a href="http://www.w3.org/TR/xpath20/#errors">XML Path Language (XPath) 2.0,
2353          * 2.3 Error Handling</a>
2354          * @param message the message to be read by the user.
2355          * @param sourceLocation the location of where the warning originates from.
2356          */
2357         void warning(const QString &message, const QSourceLocation &sourceLocation = QSourceLocation());
2358
2359         /**
2360          * Issues an error. May be used at the static analysis phase or
2361          * the dynamic evaluation phase.
2362          *
2363          * For SourceLocationReflection instances, the overload taking an SouourceLocationReflection should be used.
2364          *
2365          * @see <a href="http://www.w3.org/TR/xpath20/#errors">XML Path Language (XPath) 2.0,
2366          * 2.3 Error Handling</a>
2367          * @param message the message to be read by the user.
2368          * @param errorCode identifies the error condition, as described
2369          * @param sourceLocation the location of where the error originates from
2370          * in "XML Path Language (XPath) 2.0" section "G Error Conditions"
2371          */
2372         void error(const QString &message,
2373                    const ReportContext::ErrorCode errorCode,
2374                    const QSourceLocation &sourceLocation);
2375
2376         /**
2377          * Overload.
2378          *
2379          * Same as the above, but passes the SourceLocationReflection as reference for error reporting.
2380          */
2381         void error(const QString &message,
2382                    const ReportContext::ErrorCode errorCode,
2383                    const SourceLocationReflection *const reflection);
2384
2385         /**
2386          * Issues an error which is not identified in the XPath specifications. This function
2387          * is among other things used for implementing the <tt>fn:error()</tt> function.
2388          */
2389         void error(const QString &message,
2390                    const QXmlName qName,
2391                    const SourceLocationReflection *const r);
2392
2393         /**
2394          * @return the QAbstractMessageHandler which functions such as warning() and
2395          * error() should submit messages to. This function
2396          * may never return @c null; a valid QAbstractMessageHandler pointer must always be returned.
2397          */
2398         virtual QAbstractMessageHandler *messageHandler() const = 0;
2399
2400         virtual NamePool::Ptr namePool() const = 0;
2401
2402         /**
2403          * Returns a string representation of the error code @p code.
2404          *
2405          * @see ReportContext::ErrorCode
2406          * @param errorCode identifies the error condition, as described
2407          * in <a href="http://www.w3.org/TR/xpath20/#id-errors">XML Path
2408          * Language (XPath) 2.0, G Error Conditions</a>
2409          */
2410         static QString codeToString(const ReportContext::ErrorCode errorCode);
2411
2412         /**
2413          * @returns the error code part of @p typeURI and sets @p uri to the error namespace. Note
2414          * that the error namespace not necessarily is the namespace for XPath and
2415          * XQuery errors, http://www.w3.org/2005/xqt-errors, but can be user defined.
2416          */
2417         static QString codeFromURI(const QString &typeURI,
2418                                    QString &uri);
2419
2420         /**
2421          * @short Returns the source location applying for @p reflection.
2422          */
2423         virtual QSourceLocation locationFor(const SourceLocationReflection *const reflection) const = 0;
2424
2425         /**
2426          * Resolves @p relative against @p baseURI, possibly using a URI resolver.
2427          */
2428         QUrl resolveURI(const QUrl &relative,
2429                         const QUrl &baseURI) const;
2430
2431         /**
2432          * @short The URI resolver in use.
2433          *
2434          * If no URI resolver is in use, a @c null pointer is returned.
2435          *
2436          * @note You should probably use resolveURI(), which handles the case of
2437          * when uriResolver() is @c null.
2438          */
2439         virtual const QAbstractUriResolver *uriResolver() const = 0;
2440
2441     private:
2442         void createError(const QString &description,
2443                          const QtMsgType type,
2444                          const QUrl &id,
2445                          const QSourceLocation &sourceLocation) const;
2446         static inline QString finalizeDescription(const QString &desc);
2447         QSourceLocation lookupSourceLocation(const SourceLocationReflection *const ref) const;
2448
2449         Q_DISABLE_COPY(ReportContext)
2450     };
2451
2452     /**
2453      * @short This is the class type that is being thrown when a query error occur.
2454      *
2455      * @relates ReportContext
2456      */
2457     typedef bool Exception;
2458 }
2459
2460 QT_END_NAMESPACE
2461
2462 QT_END_HEADER
2463
2464 #endif