nokogiri 1.11.0.rc1-x86-linux → 1.11.1-x86-linux

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/LICENSE-DEPENDENCIES.md +1015 -947
  4. data/README.md +164 -92
  5. data/ext/nokogiri/depend +476 -357
  6. data/ext/nokogiri/extconf.rb +467 -326
  7. data/ext/nokogiri/html_document.c +79 -78
  8. data/ext/nokogiri/html_sax_parser_context.c +4 -2
  9. data/ext/nokogiri/html_sax_push_parser.c +14 -8
  10. data/ext/nokogiri/include/libexslt/exslt.h +102 -0
  11. data/ext/nokogiri/include/libexslt/exsltconfig.h +70 -0
  12. data/ext/nokogiri/include/libexslt/exsltexports.h +140 -0
  13. data/ext/nokogiri/include/libxml2/libxml/DOCBparser.h +96 -0
  14. data/ext/nokogiri/include/libxml2/libxml/HTMLparser.h +306 -0
  15. data/ext/nokogiri/include/libxml2/libxml/HTMLtree.h +147 -0
  16. data/ext/nokogiri/include/libxml2/libxml/SAX.h +173 -0
  17. data/ext/nokogiri/include/libxml2/libxml/SAX2.h +178 -0
  18. data/ext/nokogiri/include/libxml2/libxml/c14n.h +126 -0
  19. data/ext/nokogiri/include/libxml2/libxml/catalog.h +182 -0
  20. data/ext/nokogiri/include/libxml2/libxml/chvalid.h +230 -0
  21. data/ext/nokogiri/include/libxml2/libxml/debugXML.h +217 -0
  22. data/ext/nokogiri/include/libxml2/libxml/dict.h +79 -0
  23. data/ext/nokogiri/include/libxml2/libxml/encoding.h +245 -0
  24. data/ext/nokogiri/include/libxml2/libxml/entities.h +151 -0
  25. data/ext/nokogiri/include/libxml2/libxml/globals.h +508 -0
  26. data/ext/nokogiri/include/libxml2/libxml/hash.h +236 -0
  27. data/ext/nokogiri/include/libxml2/libxml/list.h +137 -0
  28. data/ext/nokogiri/include/libxml2/libxml/nanoftp.h +163 -0
  29. data/ext/nokogiri/include/libxml2/libxml/nanohttp.h +81 -0
  30. data/ext/nokogiri/include/libxml2/libxml/parser.h +1241 -0
  31. data/ext/nokogiri/include/libxml2/libxml/parserInternals.h +644 -0
  32. data/ext/nokogiri/include/libxml2/libxml/pattern.h +100 -0
  33. data/ext/nokogiri/include/libxml2/libxml/relaxng.h +217 -0
  34. data/ext/nokogiri/include/libxml2/libxml/schemasInternals.h +958 -0
  35. data/ext/nokogiri/include/libxml2/libxml/schematron.h +142 -0
  36. data/ext/nokogiri/include/libxml2/libxml/threads.h +89 -0
  37. data/ext/nokogiri/include/libxml2/libxml/tree.h +1311 -0
  38. data/ext/nokogiri/include/libxml2/libxml/uri.h +94 -0
  39. data/ext/nokogiri/include/libxml2/libxml/valid.h +458 -0
  40. data/ext/nokogiri/include/libxml2/libxml/xinclude.h +129 -0
  41. data/ext/nokogiri/include/libxml2/libxml/xlink.h +189 -0
  42. data/ext/nokogiri/include/libxml2/libxml/xmlIO.h +366 -0
  43. data/ext/nokogiri/include/libxml2/libxml/xmlautomata.h +146 -0
  44. data/ext/nokogiri/include/libxml2/libxml/xmlerror.h +945 -0
  45. data/ext/nokogiri/include/libxml2/libxml/xmlexports.h +153 -0
  46. data/ext/nokogiri/include/libxml2/libxml/xmlmemory.h +224 -0
  47. data/ext/nokogiri/include/libxml2/libxml/xmlmodule.h +57 -0
  48. data/ext/nokogiri/include/libxml2/libxml/xmlreader.h +428 -0
  49. data/ext/nokogiri/include/libxml2/libxml/xmlregexp.h +222 -0
  50. data/ext/nokogiri/include/libxml2/libxml/xmlsave.h +88 -0
  51. data/ext/nokogiri/include/libxml2/libxml/xmlschemas.h +246 -0
  52. data/ext/nokogiri/include/libxml2/libxml/xmlschemastypes.h +151 -0
  53. data/ext/nokogiri/include/libxml2/libxml/xmlstring.h +140 -0
  54. data/ext/nokogiri/include/libxml2/libxml/xmlunicode.h +202 -0
  55. data/ext/nokogiri/include/libxml2/libxml/xmlversion.h +485 -0
  56. data/ext/nokogiri/include/libxml2/libxml/xmlwriter.h +488 -0
  57. data/ext/nokogiri/include/libxml2/libxml/xpath.h +566 -0
  58. data/ext/nokogiri/include/libxml2/libxml/xpathInternals.h +632 -0
  59. data/ext/nokogiri/include/libxml2/libxml/xpointer.h +114 -0
  60. data/ext/nokogiri/include/libxslt/attributes.h +38 -0
  61. data/ext/nokogiri/include/libxslt/documents.h +93 -0
  62. data/ext/nokogiri/include/libxslt/extensions.h +262 -0
  63. data/ext/nokogiri/include/libxslt/extra.h +72 -0
  64. data/ext/nokogiri/include/libxslt/functions.h +78 -0
  65. data/ext/nokogiri/include/libxslt/imports.h +75 -0
  66. data/ext/nokogiri/include/libxslt/keys.h +53 -0
  67. data/ext/nokogiri/include/libxslt/namespaces.h +68 -0
  68. data/ext/nokogiri/include/libxslt/numbersInternals.h +73 -0
  69. data/ext/nokogiri/include/libxslt/pattern.h +84 -0
  70. data/ext/nokogiri/include/libxslt/preproc.h +43 -0
  71. data/ext/nokogiri/include/libxslt/security.h +104 -0
  72. data/ext/nokogiri/include/libxslt/templates.h +77 -0
  73. data/ext/nokogiri/include/libxslt/transform.h +207 -0
  74. data/ext/nokogiri/include/libxslt/variables.h +118 -0
  75. data/ext/nokogiri/include/libxslt/xslt.h +110 -0
  76. data/ext/nokogiri/include/libxslt/xsltInternals.h +1978 -0
  77. data/ext/nokogiri/include/libxslt/xsltconfig.h +180 -0
  78. data/ext/nokogiri/include/libxslt/xsltexports.h +142 -0
  79. data/ext/nokogiri/include/libxslt/xsltlocale.h +76 -0
  80. data/ext/nokogiri/include/libxslt/xsltutils.h +313 -0
  81. data/ext/nokogiri/nokogiri.c +37 -46
  82. data/ext/nokogiri/nokogiri.h +25 -17
  83. data/ext/nokogiri/test_global_handlers.c +41 -0
  84. data/ext/nokogiri/xml_document.c +8 -3
  85. data/ext/nokogiri/xml_io.c +8 -6
  86. data/ext/nokogiri/xml_node.c +1 -1
  87. data/ext/nokogiri/xml_node_set.c +1 -1
  88. data/ext/nokogiri/xml_reader.c +6 -17
  89. data/ext/nokogiri/xml_relax_ng.c +29 -11
  90. data/ext/nokogiri/xml_sax_parser.c +2 -7
  91. data/ext/nokogiri/xml_sax_parser_context.c +4 -2
  92. data/ext/nokogiri/xml_sax_push_parser.c +2 -0
  93. data/ext/nokogiri/xml_schema.c +84 -13
  94. data/ext/nokogiri/xml_syntax_error.c +23 -0
  95. data/ext/nokogiri/xml_syntax_error.h +15 -3
  96. data/ext/nokogiri/xml_xpath_context.c +80 -4
  97. data/ext/nokogiri/xslt_stylesheet.c +1 -4
  98. data/lib/nokogiri.rb +20 -3
  99. data/lib/nokogiri/2.5/nokogiri.so +0 -0
  100. data/lib/nokogiri/2.6/nokogiri.so +0 -0
  101. data/lib/nokogiri/2.7/nokogiri.so +0 -0
  102. data/lib/nokogiri/3.0/nokogiri.so +0 -0
  103. data/lib/nokogiri/css/parser.rb +62 -62
  104. data/lib/nokogiri/css/parser.y +2 -2
  105. data/lib/nokogiri/css/parser_extras.rb +38 -36
  106. data/lib/nokogiri/css/xpath_visitor.rb +70 -42
  107. data/lib/nokogiri/html/document.rb +12 -26
  108. data/lib/nokogiri/version.rb +2 -148
  109. data/lib/nokogiri/version/constant.rb +5 -0
  110. data/lib/nokogiri/version/info.rb +182 -0
  111. data/lib/nokogiri/xml/builder.rb +2 -2
  112. data/lib/nokogiri/xml/document.rb +17 -7
  113. data/lib/nokogiri/xml/document_fragment.rb +4 -6
  114. data/lib/nokogiri/xml/node.rb +562 -238
  115. data/lib/nokogiri/xml/parse_options.rb +6 -0
  116. data/lib/nokogiri/xml/relax_ng.rb +6 -2
  117. data/lib/nokogiri/xml/schema.rb +12 -4
  118. data/lib/nokogiri/xml/searchable.rb +24 -16
  119. metadata +149 -130
  120. data/lib/nokogiri/2.4/nokogiri.so +0 -0
@@ -0,0 +1,100 @@
1
+ /*
2
+ * Summary: pattern expression handling
3
+ * Description: allows to compile and test pattern expressions for nodes
4
+ * either in a tree or based on a parser state.
5
+ *
6
+ * Copy: See Copyright for the status of this software.
7
+ *
8
+ * Author: Daniel Veillard
9
+ */
10
+
11
+ #ifndef __XML_PATTERN_H__
12
+ #define __XML_PATTERN_H__
13
+
14
+ #include <libxml/xmlversion.h>
15
+ #include <libxml/tree.h>
16
+ #include <libxml/dict.h>
17
+
18
+ #ifdef LIBXML_PATTERN_ENABLED
19
+
20
+ #ifdef __cplusplus
21
+ extern "C" {
22
+ #endif
23
+
24
+ /**
25
+ * xmlPattern:
26
+ *
27
+ * A compiled (XPath based) pattern to select nodes
28
+ */
29
+ typedef struct _xmlPattern xmlPattern;
30
+ typedef xmlPattern *xmlPatternPtr;
31
+
32
+ /**
33
+ * xmlPatternFlags:
34
+ *
35
+ * This is the set of options affecting the behaviour of pattern
36
+ * matching with this module
37
+ *
38
+ */
39
+ typedef enum {
40
+ XML_PATTERN_DEFAULT = 0, /* simple pattern match */
41
+ XML_PATTERN_XPATH = 1<<0, /* standard XPath pattern */
42
+ XML_PATTERN_XSSEL = 1<<1, /* XPath subset for schema selector */
43
+ XML_PATTERN_XSFIELD = 1<<2 /* XPath subset for schema field */
44
+ } xmlPatternFlags;
45
+
46
+ XMLPUBFUN void XMLCALL
47
+ xmlFreePattern (xmlPatternPtr comp);
48
+
49
+ XMLPUBFUN void XMLCALL
50
+ xmlFreePatternList (xmlPatternPtr comp);
51
+
52
+ XMLPUBFUN xmlPatternPtr XMLCALL
53
+ xmlPatterncompile (const xmlChar *pattern,
54
+ xmlDict *dict,
55
+ int flags,
56
+ const xmlChar **namespaces);
57
+ XMLPUBFUN int XMLCALL
58
+ xmlPatternMatch (xmlPatternPtr comp,
59
+ xmlNodePtr node);
60
+
61
+ /* streaming interfaces */
62
+ typedef struct _xmlStreamCtxt xmlStreamCtxt;
63
+ typedef xmlStreamCtxt *xmlStreamCtxtPtr;
64
+
65
+ XMLPUBFUN int XMLCALL
66
+ xmlPatternStreamable (xmlPatternPtr comp);
67
+ XMLPUBFUN int XMLCALL
68
+ xmlPatternMaxDepth (xmlPatternPtr comp);
69
+ XMLPUBFUN int XMLCALL
70
+ xmlPatternMinDepth (xmlPatternPtr comp);
71
+ XMLPUBFUN int XMLCALL
72
+ xmlPatternFromRoot (xmlPatternPtr comp);
73
+ XMLPUBFUN xmlStreamCtxtPtr XMLCALL
74
+ xmlPatternGetStreamCtxt (xmlPatternPtr comp);
75
+ XMLPUBFUN void XMLCALL
76
+ xmlFreeStreamCtxt (xmlStreamCtxtPtr stream);
77
+ XMLPUBFUN int XMLCALL
78
+ xmlStreamPushNode (xmlStreamCtxtPtr stream,
79
+ const xmlChar *name,
80
+ const xmlChar *ns,
81
+ int nodeType);
82
+ XMLPUBFUN int XMLCALL
83
+ xmlStreamPush (xmlStreamCtxtPtr stream,
84
+ const xmlChar *name,
85
+ const xmlChar *ns);
86
+ XMLPUBFUN int XMLCALL
87
+ xmlStreamPushAttr (xmlStreamCtxtPtr stream,
88
+ const xmlChar *name,
89
+ const xmlChar *ns);
90
+ XMLPUBFUN int XMLCALL
91
+ xmlStreamPop (xmlStreamCtxtPtr stream);
92
+ XMLPUBFUN int XMLCALL
93
+ xmlStreamWantsAnyNode (xmlStreamCtxtPtr stream);
94
+ #ifdef __cplusplus
95
+ }
96
+ #endif
97
+
98
+ #endif /* LIBXML_PATTERN_ENABLED */
99
+
100
+ #endif /* __XML_PATTERN_H__ */
@@ -0,0 +1,217 @@
1
+ /*
2
+ * Summary: implementation of the Relax-NG validation
3
+ * Description: implementation of the Relax-NG validation
4
+ *
5
+ * Copy: See Copyright for the status of this software.
6
+ *
7
+ * Author: Daniel Veillard
8
+ */
9
+
10
+ #ifndef __XML_RELAX_NG__
11
+ #define __XML_RELAX_NG__
12
+
13
+ #include <libxml/xmlversion.h>
14
+ #include <libxml/hash.h>
15
+ #include <libxml/xmlstring.h>
16
+
17
+ #ifdef LIBXML_SCHEMAS_ENABLED
18
+
19
+ #ifdef __cplusplus
20
+ extern "C" {
21
+ #endif
22
+
23
+ typedef struct _xmlRelaxNG xmlRelaxNG;
24
+ typedef xmlRelaxNG *xmlRelaxNGPtr;
25
+
26
+
27
+ /**
28
+ * xmlRelaxNGValidityErrorFunc:
29
+ * @ctx: the validation context
30
+ * @msg: the message
31
+ * @...: extra arguments
32
+ *
33
+ * Signature of an error callback from a Relax-NG validation
34
+ */
35
+ typedef void (XMLCDECL *xmlRelaxNGValidityErrorFunc) (void *ctx,
36
+ const char *msg,
37
+ ...) LIBXML_ATTR_FORMAT(2,3);
38
+
39
+ /**
40
+ * xmlRelaxNGValidityWarningFunc:
41
+ * @ctx: the validation context
42
+ * @msg: the message
43
+ * @...: extra arguments
44
+ *
45
+ * Signature of a warning callback from a Relax-NG validation
46
+ */
47
+ typedef void (XMLCDECL *xmlRelaxNGValidityWarningFunc) (void *ctx,
48
+ const char *msg,
49
+ ...) LIBXML_ATTR_FORMAT(2,3);
50
+
51
+ /**
52
+ * A schemas validation context
53
+ */
54
+ typedef struct _xmlRelaxNGParserCtxt xmlRelaxNGParserCtxt;
55
+ typedef xmlRelaxNGParserCtxt *xmlRelaxNGParserCtxtPtr;
56
+
57
+ typedef struct _xmlRelaxNGValidCtxt xmlRelaxNGValidCtxt;
58
+ typedef xmlRelaxNGValidCtxt *xmlRelaxNGValidCtxtPtr;
59
+
60
+ /*
61
+ * xmlRelaxNGValidErr:
62
+ *
63
+ * List of possible Relax NG validation errors
64
+ */
65
+ typedef enum {
66
+ XML_RELAXNG_OK = 0,
67
+ XML_RELAXNG_ERR_MEMORY,
68
+ XML_RELAXNG_ERR_TYPE,
69
+ XML_RELAXNG_ERR_TYPEVAL,
70
+ XML_RELAXNG_ERR_DUPID,
71
+ XML_RELAXNG_ERR_TYPECMP,
72
+ XML_RELAXNG_ERR_NOSTATE,
73
+ XML_RELAXNG_ERR_NODEFINE,
74
+ XML_RELAXNG_ERR_LISTEXTRA,
75
+ XML_RELAXNG_ERR_LISTEMPTY,
76
+ XML_RELAXNG_ERR_INTERNODATA,
77
+ XML_RELAXNG_ERR_INTERSEQ,
78
+ XML_RELAXNG_ERR_INTEREXTRA,
79
+ XML_RELAXNG_ERR_ELEMNAME,
80
+ XML_RELAXNG_ERR_ATTRNAME,
81
+ XML_RELAXNG_ERR_ELEMNONS,
82
+ XML_RELAXNG_ERR_ATTRNONS,
83
+ XML_RELAXNG_ERR_ELEMWRONGNS,
84
+ XML_RELAXNG_ERR_ATTRWRONGNS,
85
+ XML_RELAXNG_ERR_ELEMEXTRANS,
86
+ XML_RELAXNG_ERR_ATTREXTRANS,
87
+ XML_RELAXNG_ERR_ELEMNOTEMPTY,
88
+ XML_RELAXNG_ERR_NOELEM,
89
+ XML_RELAXNG_ERR_NOTELEM,
90
+ XML_RELAXNG_ERR_ATTRVALID,
91
+ XML_RELAXNG_ERR_CONTENTVALID,
92
+ XML_RELAXNG_ERR_EXTRACONTENT,
93
+ XML_RELAXNG_ERR_INVALIDATTR,
94
+ XML_RELAXNG_ERR_DATAELEM,
95
+ XML_RELAXNG_ERR_VALELEM,
96
+ XML_RELAXNG_ERR_LISTELEM,
97
+ XML_RELAXNG_ERR_DATATYPE,
98
+ XML_RELAXNG_ERR_VALUE,
99
+ XML_RELAXNG_ERR_LIST,
100
+ XML_RELAXNG_ERR_NOGRAMMAR,
101
+ XML_RELAXNG_ERR_EXTRADATA,
102
+ XML_RELAXNG_ERR_LACKDATA,
103
+ XML_RELAXNG_ERR_INTERNAL,
104
+ XML_RELAXNG_ERR_ELEMWRONG,
105
+ XML_RELAXNG_ERR_TEXTWRONG
106
+ } xmlRelaxNGValidErr;
107
+
108
+ /*
109
+ * xmlRelaxNGParserFlags:
110
+ *
111
+ * List of possible Relax NG Parser flags
112
+ */
113
+ typedef enum {
114
+ XML_RELAXNGP_NONE = 0,
115
+ XML_RELAXNGP_FREE_DOC = 1,
116
+ XML_RELAXNGP_CRNG = 2
117
+ } xmlRelaxNGParserFlag;
118
+
119
+ XMLPUBFUN int XMLCALL
120
+ xmlRelaxNGInitTypes (void);
121
+ XMLPUBFUN void XMLCALL
122
+ xmlRelaxNGCleanupTypes (void);
123
+
124
+ /*
125
+ * Interfaces for parsing.
126
+ */
127
+ XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
128
+ xmlRelaxNGNewParserCtxt (const char *URL);
129
+ XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
130
+ xmlRelaxNGNewMemParserCtxt (const char *buffer,
131
+ int size);
132
+ XMLPUBFUN xmlRelaxNGParserCtxtPtr XMLCALL
133
+ xmlRelaxNGNewDocParserCtxt (xmlDocPtr doc);
134
+
135
+ XMLPUBFUN int XMLCALL
136
+ xmlRelaxParserSetFlag (xmlRelaxNGParserCtxtPtr ctxt,
137
+ int flag);
138
+
139
+ XMLPUBFUN void XMLCALL
140
+ xmlRelaxNGFreeParserCtxt (xmlRelaxNGParserCtxtPtr ctxt);
141
+ XMLPUBFUN void XMLCALL
142
+ xmlRelaxNGSetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
143
+ xmlRelaxNGValidityErrorFunc err,
144
+ xmlRelaxNGValidityWarningFunc warn,
145
+ void *ctx);
146
+ XMLPUBFUN int XMLCALL
147
+ xmlRelaxNGGetParserErrors(xmlRelaxNGParserCtxtPtr ctxt,
148
+ xmlRelaxNGValidityErrorFunc *err,
149
+ xmlRelaxNGValidityWarningFunc *warn,
150
+ void **ctx);
151
+ XMLPUBFUN void XMLCALL
152
+ xmlRelaxNGSetParserStructuredErrors(
153
+ xmlRelaxNGParserCtxtPtr ctxt,
154
+ xmlStructuredErrorFunc serror,
155
+ void *ctx);
156
+ XMLPUBFUN xmlRelaxNGPtr XMLCALL
157
+ xmlRelaxNGParse (xmlRelaxNGParserCtxtPtr ctxt);
158
+ XMLPUBFUN void XMLCALL
159
+ xmlRelaxNGFree (xmlRelaxNGPtr schema);
160
+ #ifdef LIBXML_OUTPUT_ENABLED
161
+ XMLPUBFUN void XMLCALL
162
+ xmlRelaxNGDump (FILE *output,
163
+ xmlRelaxNGPtr schema);
164
+ XMLPUBFUN void XMLCALL
165
+ xmlRelaxNGDumpTree (FILE * output,
166
+ xmlRelaxNGPtr schema);
167
+ #endif /* LIBXML_OUTPUT_ENABLED */
168
+ /*
169
+ * Interfaces for validating
170
+ */
171
+ XMLPUBFUN void XMLCALL
172
+ xmlRelaxNGSetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
173
+ xmlRelaxNGValidityErrorFunc err,
174
+ xmlRelaxNGValidityWarningFunc warn,
175
+ void *ctx);
176
+ XMLPUBFUN int XMLCALL
177
+ xmlRelaxNGGetValidErrors(xmlRelaxNGValidCtxtPtr ctxt,
178
+ xmlRelaxNGValidityErrorFunc *err,
179
+ xmlRelaxNGValidityWarningFunc *warn,
180
+ void **ctx);
181
+ XMLPUBFUN void XMLCALL
182
+ xmlRelaxNGSetValidStructuredErrors(xmlRelaxNGValidCtxtPtr ctxt,
183
+ xmlStructuredErrorFunc serror, void *ctx);
184
+ XMLPUBFUN xmlRelaxNGValidCtxtPtr XMLCALL
185
+ xmlRelaxNGNewValidCtxt (xmlRelaxNGPtr schema);
186
+ XMLPUBFUN void XMLCALL
187
+ xmlRelaxNGFreeValidCtxt (xmlRelaxNGValidCtxtPtr ctxt);
188
+ XMLPUBFUN int XMLCALL
189
+ xmlRelaxNGValidateDoc (xmlRelaxNGValidCtxtPtr ctxt,
190
+ xmlDocPtr doc);
191
+ /*
192
+ * Interfaces for progressive validation when possible
193
+ */
194
+ XMLPUBFUN int XMLCALL
195
+ xmlRelaxNGValidatePushElement (xmlRelaxNGValidCtxtPtr ctxt,
196
+ xmlDocPtr doc,
197
+ xmlNodePtr elem);
198
+ XMLPUBFUN int XMLCALL
199
+ xmlRelaxNGValidatePushCData (xmlRelaxNGValidCtxtPtr ctxt,
200
+ const xmlChar *data,
201
+ int len);
202
+ XMLPUBFUN int XMLCALL
203
+ xmlRelaxNGValidatePopElement (xmlRelaxNGValidCtxtPtr ctxt,
204
+ xmlDocPtr doc,
205
+ xmlNodePtr elem);
206
+ XMLPUBFUN int XMLCALL
207
+ xmlRelaxNGValidateFullElement (xmlRelaxNGValidCtxtPtr ctxt,
208
+ xmlDocPtr doc,
209
+ xmlNodePtr elem);
210
+
211
+ #ifdef __cplusplus
212
+ }
213
+ #endif
214
+
215
+ #endif /* LIBXML_SCHEMAS_ENABLED */
216
+
217
+ #endif /* __XML_RELAX_NG__ */
@@ -0,0 +1,958 @@
1
+ /*
2
+ * Summary: internal interfaces for XML Schemas
3
+ * Description: internal interfaces for the XML Schemas handling
4
+ * and schema validity checking
5
+ * The Schemas development is a Work In Progress.
6
+ * Some of those interfaces are not guaranteed to be API or ABI stable !
7
+ *
8
+ * Copy: See Copyright for the status of this software.
9
+ *
10
+ * Author: Daniel Veillard
11
+ */
12
+
13
+
14
+ #ifndef __XML_SCHEMA_INTERNALS_H__
15
+ #define __XML_SCHEMA_INTERNALS_H__
16
+
17
+ #include <libxml/xmlversion.h>
18
+
19
+ #ifdef LIBXML_SCHEMAS_ENABLED
20
+
21
+ #include <libxml/xmlregexp.h>
22
+ #include <libxml/hash.h>
23
+ #include <libxml/dict.h>
24
+
25
+ #ifdef __cplusplus
26
+ extern "C" {
27
+ #endif
28
+
29
+ typedef enum {
30
+ XML_SCHEMAS_UNKNOWN = 0,
31
+ XML_SCHEMAS_STRING = 1,
32
+ XML_SCHEMAS_NORMSTRING = 2,
33
+ XML_SCHEMAS_DECIMAL = 3,
34
+ XML_SCHEMAS_TIME = 4,
35
+ XML_SCHEMAS_GDAY = 5,
36
+ XML_SCHEMAS_GMONTH = 6,
37
+ XML_SCHEMAS_GMONTHDAY = 7,
38
+ XML_SCHEMAS_GYEAR = 8,
39
+ XML_SCHEMAS_GYEARMONTH = 9,
40
+ XML_SCHEMAS_DATE = 10,
41
+ XML_SCHEMAS_DATETIME = 11,
42
+ XML_SCHEMAS_DURATION = 12,
43
+ XML_SCHEMAS_FLOAT = 13,
44
+ XML_SCHEMAS_DOUBLE = 14,
45
+ XML_SCHEMAS_BOOLEAN = 15,
46
+ XML_SCHEMAS_TOKEN = 16,
47
+ XML_SCHEMAS_LANGUAGE = 17,
48
+ XML_SCHEMAS_NMTOKEN = 18,
49
+ XML_SCHEMAS_NMTOKENS = 19,
50
+ XML_SCHEMAS_NAME = 20,
51
+ XML_SCHEMAS_QNAME = 21,
52
+ XML_SCHEMAS_NCNAME = 22,
53
+ XML_SCHEMAS_ID = 23,
54
+ XML_SCHEMAS_IDREF = 24,
55
+ XML_SCHEMAS_IDREFS = 25,
56
+ XML_SCHEMAS_ENTITY = 26,
57
+ XML_SCHEMAS_ENTITIES = 27,
58
+ XML_SCHEMAS_NOTATION = 28,
59
+ XML_SCHEMAS_ANYURI = 29,
60
+ XML_SCHEMAS_INTEGER = 30,
61
+ XML_SCHEMAS_NPINTEGER = 31,
62
+ XML_SCHEMAS_NINTEGER = 32,
63
+ XML_SCHEMAS_NNINTEGER = 33,
64
+ XML_SCHEMAS_PINTEGER = 34,
65
+ XML_SCHEMAS_INT = 35,
66
+ XML_SCHEMAS_UINT = 36,
67
+ XML_SCHEMAS_LONG = 37,
68
+ XML_SCHEMAS_ULONG = 38,
69
+ XML_SCHEMAS_SHORT = 39,
70
+ XML_SCHEMAS_USHORT = 40,
71
+ XML_SCHEMAS_BYTE = 41,
72
+ XML_SCHEMAS_UBYTE = 42,
73
+ XML_SCHEMAS_HEXBINARY = 43,
74
+ XML_SCHEMAS_BASE64BINARY = 44,
75
+ XML_SCHEMAS_ANYTYPE = 45,
76
+ XML_SCHEMAS_ANYSIMPLETYPE = 46
77
+ } xmlSchemaValType;
78
+
79
+ /*
80
+ * XML Schemas defines multiple type of types.
81
+ */
82
+ typedef enum {
83
+ XML_SCHEMA_TYPE_BASIC = 1, /* A built-in datatype */
84
+ XML_SCHEMA_TYPE_ANY,
85
+ XML_SCHEMA_TYPE_FACET,
86
+ XML_SCHEMA_TYPE_SIMPLE,
87
+ XML_SCHEMA_TYPE_COMPLEX,
88
+ XML_SCHEMA_TYPE_SEQUENCE = 6,
89
+ XML_SCHEMA_TYPE_CHOICE,
90
+ XML_SCHEMA_TYPE_ALL,
91
+ XML_SCHEMA_TYPE_SIMPLE_CONTENT,
92
+ XML_SCHEMA_TYPE_COMPLEX_CONTENT,
93
+ XML_SCHEMA_TYPE_UR,
94
+ XML_SCHEMA_TYPE_RESTRICTION,
95
+ XML_SCHEMA_TYPE_EXTENSION,
96
+ XML_SCHEMA_TYPE_ELEMENT,
97
+ XML_SCHEMA_TYPE_ATTRIBUTE,
98
+ XML_SCHEMA_TYPE_ATTRIBUTEGROUP,
99
+ XML_SCHEMA_TYPE_GROUP,
100
+ XML_SCHEMA_TYPE_NOTATION,
101
+ XML_SCHEMA_TYPE_LIST,
102
+ XML_SCHEMA_TYPE_UNION,
103
+ XML_SCHEMA_TYPE_ANY_ATTRIBUTE,
104
+ XML_SCHEMA_TYPE_IDC_UNIQUE,
105
+ XML_SCHEMA_TYPE_IDC_KEY,
106
+ XML_SCHEMA_TYPE_IDC_KEYREF,
107
+ XML_SCHEMA_TYPE_PARTICLE = 25,
108
+ XML_SCHEMA_TYPE_ATTRIBUTE_USE,
109
+ XML_SCHEMA_FACET_MININCLUSIVE = 1000,
110
+ XML_SCHEMA_FACET_MINEXCLUSIVE,
111
+ XML_SCHEMA_FACET_MAXINCLUSIVE,
112
+ XML_SCHEMA_FACET_MAXEXCLUSIVE,
113
+ XML_SCHEMA_FACET_TOTALDIGITS,
114
+ XML_SCHEMA_FACET_FRACTIONDIGITS,
115
+ XML_SCHEMA_FACET_PATTERN,
116
+ XML_SCHEMA_FACET_ENUMERATION,
117
+ XML_SCHEMA_FACET_WHITESPACE,
118
+ XML_SCHEMA_FACET_LENGTH,
119
+ XML_SCHEMA_FACET_MAXLENGTH,
120
+ XML_SCHEMA_FACET_MINLENGTH,
121
+ XML_SCHEMA_EXTRA_QNAMEREF = 2000,
122
+ XML_SCHEMA_EXTRA_ATTR_USE_PROHIB
123
+ } xmlSchemaTypeType;
124
+
125
+ typedef enum {
126
+ XML_SCHEMA_CONTENT_UNKNOWN = 0,
127
+ XML_SCHEMA_CONTENT_EMPTY = 1,
128
+ XML_SCHEMA_CONTENT_ELEMENTS,
129
+ XML_SCHEMA_CONTENT_MIXED,
130
+ XML_SCHEMA_CONTENT_SIMPLE,
131
+ XML_SCHEMA_CONTENT_MIXED_OR_ELEMENTS, /* Obsolete */
132
+ XML_SCHEMA_CONTENT_BASIC,
133
+ XML_SCHEMA_CONTENT_ANY
134
+ } xmlSchemaContentType;
135
+
136
+ typedef struct _xmlSchemaVal xmlSchemaVal;
137
+ typedef xmlSchemaVal *xmlSchemaValPtr;
138
+
139
+ typedef struct _xmlSchemaType xmlSchemaType;
140
+ typedef xmlSchemaType *xmlSchemaTypePtr;
141
+
142
+ typedef struct _xmlSchemaFacet xmlSchemaFacet;
143
+ typedef xmlSchemaFacet *xmlSchemaFacetPtr;
144
+
145
+ /**
146
+ * Annotation
147
+ */
148
+ typedef struct _xmlSchemaAnnot xmlSchemaAnnot;
149
+ typedef xmlSchemaAnnot *xmlSchemaAnnotPtr;
150
+ struct _xmlSchemaAnnot {
151
+ struct _xmlSchemaAnnot *next;
152
+ xmlNodePtr content; /* the annotation */
153
+ };
154
+
155
+ /**
156
+ * XML_SCHEMAS_ANYATTR_SKIP:
157
+ *
158
+ * Skip unknown attribute from validation
159
+ * Obsolete, not used anymore.
160
+ */
161
+ #define XML_SCHEMAS_ANYATTR_SKIP 1
162
+ /**
163
+ * XML_SCHEMAS_ANYATTR_LAX:
164
+ *
165
+ * Ignore validation non definition on attributes
166
+ * Obsolete, not used anymore.
167
+ */
168
+ #define XML_SCHEMAS_ANYATTR_LAX 2
169
+ /**
170
+ * XML_SCHEMAS_ANYATTR_STRICT:
171
+ *
172
+ * Apply strict validation rules on attributes
173
+ * Obsolete, not used anymore.
174
+ */
175
+ #define XML_SCHEMAS_ANYATTR_STRICT 3
176
+ /**
177
+ * XML_SCHEMAS_ANY_SKIP:
178
+ *
179
+ * Skip unknown attribute from validation
180
+ */
181
+ #define XML_SCHEMAS_ANY_SKIP 1
182
+ /**
183
+ * XML_SCHEMAS_ANY_LAX:
184
+ *
185
+ * Used by wildcards.
186
+ * Validate if type found, don't worry if not found
187
+ */
188
+ #define XML_SCHEMAS_ANY_LAX 2
189
+ /**
190
+ * XML_SCHEMAS_ANY_STRICT:
191
+ *
192
+ * Used by wildcards.
193
+ * Apply strict validation rules
194
+ */
195
+ #define XML_SCHEMAS_ANY_STRICT 3
196
+ /**
197
+ * XML_SCHEMAS_ATTR_USE_PROHIBITED:
198
+ *
199
+ * Used by wildcards.
200
+ * The attribute is prohibited.
201
+ */
202
+ #define XML_SCHEMAS_ATTR_USE_PROHIBITED 0
203
+ /**
204
+ * XML_SCHEMAS_ATTR_USE_REQUIRED:
205
+ *
206
+ * The attribute is required.
207
+ */
208
+ #define XML_SCHEMAS_ATTR_USE_REQUIRED 1
209
+ /**
210
+ * XML_SCHEMAS_ATTR_USE_OPTIONAL:
211
+ *
212
+ * The attribute is optional.
213
+ */
214
+ #define XML_SCHEMAS_ATTR_USE_OPTIONAL 2
215
+ /**
216
+ * XML_SCHEMAS_ATTR_GLOBAL:
217
+ *
218
+ * allow elements in no namespace
219
+ */
220
+ #define XML_SCHEMAS_ATTR_GLOBAL 1 << 0
221
+ /**
222
+ * XML_SCHEMAS_ATTR_NSDEFAULT:
223
+ *
224
+ * allow elements in no namespace
225
+ */
226
+ #define XML_SCHEMAS_ATTR_NSDEFAULT 1 << 7
227
+ /**
228
+ * XML_SCHEMAS_ATTR_INTERNAL_RESOLVED:
229
+ *
230
+ * this is set when the "type" and "ref" references
231
+ * have been resolved.
232
+ */
233
+ #define XML_SCHEMAS_ATTR_INTERNAL_RESOLVED 1 << 8
234
+ /**
235
+ * XML_SCHEMAS_ATTR_FIXED:
236
+ *
237
+ * the attribute has a fixed value
238
+ */
239
+ #define XML_SCHEMAS_ATTR_FIXED 1 << 9
240
+
241
+ /**
242
+ * xmlSchemaAttribute:
243
+ * An attribute definition.
244
+ */
245
+
246
+ typedef struct _xmlSchemaAttribute xmlSchemaAttribute;
247
+ typedef xmlSchemaAttribute *xmlSchemaAttributePtr;
248
+ struct _xmlSchemaAttribute {
249
+ xmlSchemaTypeType type;
250
+ struct _xmlSchemaAttribute *next; /* the next attribute (not used?) */
251
+ const xmlChar *name; /* the name of the declaration */
252
+ const xmlChar *id; /* Deprecated; not used */
253
+ const xmlChar *ref; /* Deprecated; not used */
254
+ const xmlChar *refNs; /* Deprecated; not used */
255
+ const xmlChar *typeName; /* the local name of the type definition */
256
+ const xmlChar *typeNs; /* the ns URI of the type definition */
257
+ xmlSchemaAnnotPtr annot;
258
+
259
+ xmlSchemaTypePtr base; /* Deprecated; not used */
260
+ int occurs; /* Deprecated; not used */
261
+ const xmlChar *defValue; /* The initial value of the value constraint */
262
+ xmlSchemaTypePtr subtypes; /* the type definition */
263
+ xmlNodePtr node;
264
+ const xmlChar *targetNamespace;
265
+ int flags;
266
+ const xmlChar *refPrefix; /* Deprecated; not used */
267
+ xmlSchemaValPtr defVal; /* The compiled value constraint */
268
+ xmlSchemaAttributePtr refDecl; /* Deprecated; not used */
269
+ };
270
+
271
+ /**
272
+ * xmlSchemaAttributeLink:
273
+ * Used to build a list of attribute uses on complexType definitions.
274
+ * WARNING: Deprecated; not used.
275
+ */
276
+ typedef struct _xmlSchemaAttributeLink xmlSchemaAttributeLink;
277
+ typedef xmlSchemaAttributeLink *xmlSchemaAttributeLinkPtr;
278
+ struct _xmlSchemaAttributeLink {
279
+ struct _xmlSchemaAttributeLink *next;/* the next attribute link ... */
280
+ struct _xmlSchemaAttribute *attr;/* the linked attribute */
281
+ };
282
+
283
+ /**
284
+ * XML_SCHEMAS_WILDCARD_COMPLETE:
285
+ *
286
+ * If the wildcard is complete.
287
+ */
288
+ #define XML_SCHEMAS_WILDCARD_COMPLETE 1 << 0
289
+
290
+ /**
291
+ * xmlSchemaCharValueLink:
292
+ * Used to build a list of namespaces on wildcards.
293
+ */
294
+ typedef struct _xmlSchemaWildcardNs xmlSchemaWildcardNs;
295
+ typedef xmlSchemaWildcardNs *xmlSchemaWildcardNsPtr;
296
+ struct _xmlSchemaWildcardNs {
297
+ struct _xmlSchemaWildcardNs *next;/* the next constraint link ... */
298
+ const xmlChar *value;/* the value */
299
+ };
300
+
301
+ /**
302
+ * xmlSchemaWildcard.
303
+ * A wildcard.
304
+ */
305
+ typedef struct _xmlSchemaWildcard xmlSchemaWildcard;
306
+ typedef xmlSchemaWildcard *xmlSchemaWildcardPtr;
307
+ struct _xmlSchemaWildcard {
308
+ xmlSchemaTypeType type; /* The kind of type */
309
+ const xmlChar *id; /* Deprecated; not used */
310
+ xmlSchemaAnnotPtr annot;
311
+ xmlNodePtr node;
312
+ int minOccurs; /* Deprecated; not used */
313
+ int maxOccurs; /* Deprecated; not used */
314
+ int processContents;
315
+ int any; /* Indicates if the ns constraint is of ##any */
316
+ xmlSchemaWildcardNsPtr nsSet; /* The list of allowed namespaces */
317
+ xmlSchemaWildcardNsPtr negNsSet; /* The negated namespace */
318
+ int flags;
319
+ };
320
+
321
+ /**
322
+ * XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED:
323
+ *
324
+ * The attribute wildcard has been built.
325
+ */
326
+ #define XML_SCHEMAS_ATTRGROUP_WILDCARD_BUILDED 1 << 0
327
+ /**
328
+ * XML_SCHEMAS_ATTRGROUP_GLOBAL:
329
+ *
330
+ * The attribute group has been defined.
331
+ */
332
+ #define XML_SCHEMAS_ATTRGROUP_GLOBAL 1 << 1
333
+ /**
334
+ * XML_SCHEMAS_ATTRGROUP_MARKED:
335
+ *
336
+ * Marks the attr group as marked; used for circular checks.
337
+ */
338
+ #define XML_SCHEMAS_ATTRGROUP_MARKED 1 << 2
339
+
340
+ /**
341
+ * XML_SCHEMAS_ATTRGROUP_REDEFINED:
342
+ *
343
+ * The attr group was redefined.
344
+ */
345
+ #define XML_SCHEMAS_ATTRGROUP_REDEFINED 1 << 3
346
+ /**
347
+ * XML_SCHEMAS_ATTRGROUP_HAS_REFS:
348
+ *
349
+ * Whether this attr. group contains attr. group references.
350
+ */
351
+ #define XML_SCHEMAS_ATTRGROUP_HAS_REFS 1 << 4
352
+
353
+ /**
354
+ * An attribute group definition.
355
+ *
356
+ * xmlSchemaAttribute and xmlSchemaAttributeGroup start of structures
357
+ * must be kept similar
358
+ */
359
+ typedef struct _xmlSchemaAttributeGroup xmlSchemaAttributeGroup;
360
+ typedef xmlSchemaAttributeGroup *xmlSchemaAttributeGroupPtr;
361
+ struct _xmlSchemaAttributeGroup {
362
+ xmlSchemaTypeType type; /* The kind of type */
363
+ struct _xmlSchemaAttribute *next;/* the next attribute if in a group ... */
364
+ const xmlChar *name;
365
+ const xmlChar *id;
366
+ const xmlChar *ref; /* Deprecated; not used */
367
+ const xmlChar *refNs; /* Deprecated; not used */
368
+ xmlSchemaAnnotPtr annot;
369
+
370
+ xmlSchemaAttributePtr attributes; /* Deprecated; not used */
371
+ xmlNodePtr node;
372
+ int flags;
373
+ xmlSchemaWildcardPtr attributeWildcard;
374
+ const xmlChar *refPrefix; /* Deprecated; not used */
375
+ xmlSchemaAttributeGroupPtr refItem; /* Deprecated; not used */
376
+ const xmlChar *targetNamespace;
377
+ void *attrUses;
378
+ };
379
+
380
+ /**
381
+ * xmlSchemaTypeLink:
382
+ * Used to build a list of types (e.g. member types of
383
+ * simpleType with variety "union").
384
+ */
385
+ typedef struct _xmlSchemaTypeLink xmlSchemaTypeLink;
386
+ typedef xmlSchemaTypeLink *xmlSchemaTypeLinkPtr;
387
+ struct _xmlSchemaTypeLink {
388
+ struct _xmlSchemaTypeLink *next;/* the next type link ... */
389
+ xmlSchemaTypePtr type;/* the linked type */
390
+ };
391
+
392
+ /**
393
+ * xmlSchemaFacetLink:
394
+ * Used to build a list of facets.
395
+ */
396
+ typedef struct _xmlSchemaFacetLink xmlSchemaFacetLink;
397
+ typedef xmlSchemaFacetLink *xmlSchemaFacetLinkPtr;
398
+ struct _xmlSchemaFacetLink {
399
+ struct _xmlSchemaFacetLink *next;/* the next facet link ... */
400
+ xmlSchemaFacetPtr facet;/* the linked facet */
401
+ };
402
+
403
+ /**
404
+ * XML_SCHEMAS_TYPE_MIXED:
405
+ *
406
+ * the element content type is mixed
407
+ */
408
+ #define XML_SCHEMAS_TYPE_MIXED 1 << 0
409
+ /**
410
+ * XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION:
411
+ *
412
+ * the simple or complex type has a derivation method of "extension".
413
+ */
414
+ #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_EXTENSION 1 << 1
415
+ /**
416
+ * XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION:
417
+ *
418
+ * the simple or complex type has a derivation method of "restriction".
419
+ */
420
+ #define XML_SCHEMAS_TYPE_DERIVATION_METHOD_RESTRICTION 1 << 2
421
+ /**
422
+ * XML_SCHEMAS_TYPE_GLOBAL:
423
+ *
424
+ * the type is global
425
+ */
426
+ #define XML_SCHEMAS_TYPE_GLOBAL 1 << 3
427
+ /**
428
+ * XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD:
429
+ *
430
+ * the complexType owns an attribute wildcard, i.e.
431
+ * it can be freed by the complexType
432
+ */
433
+ #define XML_SCHEMAS_TYPE_OWNED_ATTR_WILDCARD 1 << 4 /* Obsolete. */
434
+ /**
435
+ * XML_SCHEMAS_TYPE_VARIETY_ABSENT:
436
+ *
437
+ * the simpleType has a variety of "absent".
438
+ * TODO: Actually not necessary :-/, since if
439
+ * none of the variety flags occur then it's
440
+ * automatically absent.
441
+ */
442
+ #define XML_SCHEMAS_TYPE_VARIETY_ABSENT 1 << 5
443
+ /**
444
+ * XML_SCHEMAS_TYPE_VARIETY_LIST:
445
+ *
446
+ * the simpleType has a variety of "list".
447
+ */
448
+ #define XML_SCHEMAS_TYPE_VARIETY_LIST 1 << 6
449
+ /**
450
+ * XML_SCHEMAS_TYPE_VARIETY_UNION:
451
+ *
452
+ * the simpleType has a variety of "union".
453
+ */
454
+ #define XML_SCHEMAS_TYPE_VARIETY_UNION 1 << 7
455
+ /**
456
+ * XML_SCHEMAS_TYPE_VARIETY_ATOMIC:
457
+ *
458
+ * the simpleType has a variety of "union".
459
+ */
460
+ #define XML_SCHEMAS_TYPE_VARIETY_ATOMIC 1 << 8
461
+ /**
462
+ * XML_SCHEMAS_TYPE_FINAL_EXTENSION:
463
+ *
464
+ * the complexType has a final of "extension".
465
+ */
466
+ #define XML_SCHEMAS_TYPE_FINAL_EXTENSION 1 << 9
467
+ /**
468
+ * XML_SCHEMAS_TYPE_FINAL_RESTRICTION:
469
+ *
470
+ * the simpleType/complexType has a final of "restriction".
471
+ */
472
+ #define XML_SCHEMAS_TYPE_FINAL_RESTRICTION 1 << 10
473
+ /**
474
+ * XML_SCHEMAS_TYPE_FINAL_LIST:
475
+ *
476
+ * the simpleType has a final of "list".
477
+ */
478
+ #define XML_SCHEMAS_TYPE_FINAL_LIST 1 << 11
479
+ /**
480
+ * XML_SCHEMAS_TYPE_FINAL_UNION:
481
+ *
482
+ * the simpleType has a final of "union".
483
+ */
484
+ #define XML_SCHEMAS_TYPE_FINAL_UNION 1 << 12
485
+ /**
486
+ * XML_SCHEMAS_TYPE_FINAL_DEFAULT:
487
+ *
488
+ * the simpleType has a final of "default".
489
+ */
490
+ #define XML_SCHEMAS_TYPE_FINAL_DEFAULT 1 << 13
491
+ /**
492
+ * XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE:
493
+ *
494
+ * Marks the item as a builtin primitive.
495
+ */
496
+ #define XML_SCHEMAS_TYPE_BUILTIN_PRIMITIVE 1 << 14
497
+ /**
498
+ * XML_SCHEMAS_TYPE_MARKED:
499
+ *
500
+ * Marks the item as marked; used for circular checks.
501
+ */
502
+ #define XML_SCHEMAS_TYPE_MARKED 1 << 16
503
+ /**
504
+ * XML_SCHEMAS_TYPE_BLOCK_DEFAULT:
505
+ *
506
+ * the complexType did not specify 'block' so use the default of the
507
+ * <schema> item.
508
+ */
509
+ #define XML_SCHEMAS_TYPE_BLOCK_DEFAULT 1 << 17
510
+ /**
511
+ * XML_SCHEMAS_TYPE_BLOCK_EXTENSION:
512
+ *
513
+ * the complexType has a 'block' of "extension".
514
+ */
515
+ #define XML_SCHEMAS_TYPE_BLOCK_EXTENSION 1 << 18
516
+ /**
517
+ * XML_SCHEMAS_TYPE_BLOCK_RESTRICTION:
518
+ *
519
+ * the complexType has a 'block' of "restriction".
520
+ */
521
+ #define XML_SCHEMAS_TYPE_BLOCK_RESTRICTION 1 << 19
522
+ /**
523
+ * XML_SCHEMAS_TYPE_ABSTRACT:
524
+ *
525
+ * the simple/complexType is abstract.
526
+ */
527
+ #define XML_SCHEMAS_TYPE_ABSTRACT 1 << 20
528
+ /**
529
+ * XML_SCHEMAS_TYPE_FACETSNEEDVALUE:
530
+ *
531
+ * indicates if the facets need a computed value
532
+ */
533
+ #define XML_SCHEMAS_TYPE_FACETSNEEDVALUE 1 << 21
534
+ /**
535
+ * XML_SCHEMAS_TYPE_INTERNAL_RESOLVED:
536
+ *
537
+ * indicates that the type was typefixed
538
+ */
539
+ #define XML_SCHEMAS_TYPE_INTERNAL_RESOLVED 1 << 22
540
+ /**
541
+ * XML_SCHEMAS_TYPE_INTERNAL_INVALID:
542
+ *
543
+ * indicates that the type is invalid
544
+ */
545
+ #define XML_SCHEMAS_TYPE_INTERNAL_INVALID 1 << 23
546
+ /**
547
+ * XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE:
548
+ *
549
+ * a whitespace-facet value of "preserve"
550
+ */
551
+ #define XML_SCHEMAS_TYPE_WHITESPACE_PRESERVE 1 << 24
552
+ /**
553
+ * XML_SCHEMAS_TYPE_WHITESPACE_REPLACE:
554
+ *
555
+ * a whitespace-facet value of "replace"
556
+ */
557
+ #define XML_SCHEMAS_TYPE_WHITESPACE_REPLACE 1 << 25
558
+ /**
559
+ * XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE:
560
+ *
561
+ * a whitespace-facet value of "collapse"
562
+ */
563
+ #define XML_SCHEMAS_TYPE_WHITESPACE_COLLAPSE 1 << 26
564
+ /**
565
+ * XML_SCHEMAS_TYPE_HAS_FACETS:
566
+ *
567
+ * has facets
568
+ */
569
+ #define XML_SCHEMAS_TYPE_HAS_FACETS 1 << 27
570
+ /**
571
+ * XML_SCHEMAS_TYPE_NORMVALUENEEDED:
572
+ *
573
+ * indicates if the facets (pattern) need a normalized value
574
+ */
575
+ #define XML_SCHEMAS_TYPE_NORMVALUENEEDED 1 << 28
576
+
577
+ /**
578
+ * XML_SCHEMAS_TYPE_FIXUP_1:
579
+ *
580
+ * First stage of fixup was done.
581
+ */
582
+ #define XML_SCHEMAS_TYPE_FIXUP_1 1 << 29
583
+
584
+ /**
585
+ * XML_SCHEMAS_TYPE_REDEFINED:
586
+ *
587
+ * The type was redefined.
588
+ */
589
+ #define XML_SCHEMAS_TYPE_REDEFINED 1 << 30
590
+ /**
591
+ * XML_SCHEMAS_TYPE_REDEFINING:
592
+ *
593
+ * The type redefines an other type.
594
+ */
595
+ /* #define XML_SCHEMAS_TYPE_REDEFINING 1 << 31 */
596
+
597
+ /**
598
+ * _xmlSchemaType:
599
+ *
600
+ * Schemas type definition.
601
+ */
602
+ struct _xmlSchemaType {
603
+ xmlSchemaTypeType type; /* The kind of type */
604
+ struct _xmlSchemaType *next; /* the next type if in a sequence ... */
605
+ const xmlChar *name;
606
+ const xmlChar *id ; /* Deprecated; not used */
607
+ const xmlChar *ref; /* Deprecated; not used */
608
+ const xmlChar *refNs; /* Deprecated; not used */
609
+ xmlSchemaAnnotPtr annot;
610
+ xmlSchemaTypePtr subtypes;
611
+ xmlSchemaAttributePtr attributes; /* Deprecated; not used */
612
+ xmlNodePtr node;
613
+ int minOccurs; /* Deprecated; not used */
614
+ int maxOccurs; /* Deprecated; not used */
615
+
616
+ int flags;
617
+ xmlSchemaContentType contentType;
618
+ const xmlChar *base; /* Base type's local name */
619
+ const xmlChar *baseNs; /* Base type's target namespace */
620
+ xmlSchemaTypePtr baseType; /* The base type component */
621
+ xmlSchemaFacetPtr facets; /* Local facets */
622
+ struct _xmlSchemaType *redef; /* Deprecated; not used */
623
+ int recurse; /* Obsolete */
624
+ xmlSchemaAttributeLinkPtr *attributeUses; /* Deprecated; not used */
625
+ xmlSchemaWildcardPtr attributeWildcard;
626
+ int builtInType; /* Type of built-in types. */
627
+ xmlSchemaTypeLinkPtr memberTypes; /* member-types if a union type. */
628
+ xmlSchemaFacetLinkPtr facetSet; /* All facets (incl. inherited) */
629
+ const xmlChar *refPrefix; /* Deprecated; not used */
630
+ xmlSchemaTypePtr contentTypeDef; /* Used for the simple content of complex types.
631
+ Could we use @subtypes for this? */
632
+ xmlRegexpPtr contModel; /* Holds the automaton of the content model */
633
+ const xmlChar *targetNamespace;
634
+ void *attrUses;
635
+ };
636
+
637
+ /*
638
+ * xmlSchemaElement:
639
+ * An element definition.
640
+ *
641
+ * xmlSchemaType, xmlSchemaFacet and xmlSchemaElement start of
642
+ * structures must be kept similar
643
+ */
644
+ /**
645
+ * XML_SCHEMAS_ELEM_NILLABLE:
646
+ *
647
+ * the element is nillable
648
+ */
649
+ #define XML_SCHEMAS_ELEM_NILLABLE 1 << 0
650
+ /**
651
+ * XML_SCHEMAS_ELEM_GLOBAL:
652
+ *
653
+ * the element is global
654
+ */
655
+ #define XML_SCHEMAS_ELEM_GLOBAL 1 << 1
656
+ /**
657
+ * XML_SCHEMAS_ELEM_DEFAULT:
658
+ *
659
+ * the element has a default value
660
+ */
661
+ #define XML_SCHEMAS_ELEM_DEFAULT 1 << 2
662
+ /**
663
+ * XML_SCHEMAS_ELEM_FIXED:
664
+ *
665
+ * the element has a fixed value
666
+ */
667
+ #define XML_SCHEMAS_ELEM_FIXED 1 << 3
668
+ /**
669
+ * XML_SCHEMAS_ELEM_ABSTRACT:
670
+ *
671
+ * the element is abstract
672
+ */
673
+ #define XML_SCHEMAS_ELEM_ABSTRACT 1 << 4
674
+ /**
675
+ * XML_SCHEMAS_ELEM_TOPLEVEL:
676
+ *
677
+ * the element is top level
678
+ * obsolete: use XML_SCHEMAS_ELEM_GLOBAL instead
679
+ */
680
+ #define XML_SCHEMAS_ELEM_TOPLEVEL 1 << 5
681
+ /**
682
+ * XML_SCHEMAS_ELEM_REF:
683
+ *
684
+ * the element is a reference to a type
685
+ */
686
+ #define XML_SCHEMAS_ELEM_REF 1 << 6
687
+ /**
688
+ * XML_SCHEMAS_ELEM_NSDEFAULT:
689
+ *
690
+ * allow elements in no namespace
691
+ * Obsolete, not used anymore.
692
+ */
693
+ #define XML_SCHEMAS_ELEM_NSDEFAULT 1 << 7
694
+ /**
695
+ * XML_SCHEMAS_ELEM_INTERNAL_RESOLVED:
696
+ *
697
+ * this is set when "type", "ref", "substitutionGroup"
698
+ * references have been resolved.
699
+ */
700
+ #define XML_SCHEMAS_ELEM_INTERNAL_RESOLVED 1 << 8
701
+ /**
702
+ * XML_SCHEMAS_ELEM_CIRCULAR:
703
+ *
704
+ * a helper flag for the search of circular references.
705
+ */
706
+ #define XML_SCHEMAS_ELEM_CIRCULAR 1 << 9
707
+ /**
708
+ * XML_SCHEMAS_ELEM_BLOCK_ABSENT:
709
+ *
710
+ * the "block" attribute is absent
711
+ */
712
+ #define XML_SCHEMAS_ELEM_BLOCK_ABSENT 1 << 10
713
+ /**
714
+ * XML_SCHEMAS_ELEM_BLOCK_EXTENSION:
715
+ *
716
+ * disallowed substitutions are absent
717
+ */
718
+ #define XML_SCHEMAS_ELEM_BLOCK_EXTENSION 1 << 11
719
+ /**
720
+ * XML_SCHEMAS_ELEM_BLOCK_RESTRICTION:
721
+ *
722
+ * disallowed substitutions: "restriction"
723
+ */
724
+ #define XML_SCHEMAS_ELEM_BLOCK_RESTRICTION 1 << 12
725
+ /**
726
+ * XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION:
727
+ *
728
+ * disallowed substitutions: "substitution"
729
+ */
730
+ #define XML_SCHEMAS_ELEM_BLOCK_SUBSTITUTION 1 << 13
731
+ /**
732
+ * XML_SCHEMAS_ELEM_FINAL_ABSENT:
733
+ *
734
+ * substitution group exclusions are absent
735
+ */
736
+ #define XML_SCHEMAS_ELEM_FINAL_ABSENT 1 << 14
737
+ /**
738
+ * XML_SCHEMAS_ELEM_FINAL_EXTENSION:
739
+ *
740
+ * substitution group exclusions: "extension"
741
+ */
742
+ #define XML_SCHEMAS_ELEM_FINAL_EXTENSION 1 << 15
743
+ /**
744
+ * XML_SCHEMAS_ELEM_FINAL_RESTRICTION:
745
+ *
746
+ * substitution group exclusions: "restriction"
747
+ */
748
+ #define XML_SCHEMAS_ELEM_FINAL_RESTRICTION 1 << 16
749
+ /**
750
+ * XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD:
751
+ *
752
+ * the declaration is a substitution group head
753
+ */
754
+ #define XML_SCHEMAS_ELEM_SUBST_GROUP_HEAD 1 << 17
755
+ /**
756
+ * XML_SCHEMAS_ELEM_INTERNAL_CHECKED:
757
+ *
758
+ * this is set when the elem decl has been checked against
759
+ * all constraints
760
+ */
761
+ #define XML_SCHEMAS_ELEM_INTERNAL_CHECKED 1 << 18
762
+
763
+ typedef struct _xmlSchemaElement xmlSchemaElement;
764
+ typedef xmlSchemaElement *xmlSchemaElementPtr;
765
+ struct _xmlSchemaElement {
766
+ xmlSchemaTypeType type; /* The kind of type */
767
+ struct _xmlSchemaType *next; /* Not used? */
768
+ const xmlChar *name;
769
+ const xmlChar *id; /* Deprecated; not used */
770
+ const xmlChar *ref; /* Deprecated; not used */
771
+ const xmlChar *refNs; /* Deprecated; not used */
772
+ xmlSchemaAnnotPtr annot;
773
+ xmlSchemaTypePtr subtypes; /* the type definition */
774
+ xmlSchemaAttributePtr attributes;
775
+ xmlNodePtr node;
776
+ int minOccurs; /* Deprecated; not used */
777
+ int maxOccurs; /* Deprecated; not used */
778
+
779
+ int flags;
780
+ const xmlChar *targetNamespace;
781
+ const xmlChar *namedType;
782
+ const xmlChar *namedTypeNs;
783
+ const xmlChar *substGroup;
784
+ const xmlChar *substGroupNs;
785
+ const xmlChar *scope;
786
+ const xmlChar *value; /* The original value of the value constraint. */
787
+ struct _xmlSchemaElement *refDecl; /* This will now be used for the
788
+ substitution group affiliation */
789
+ xmlRegexpPtr contModel; /* Obsolete for WXS, maybe used for RelaxNG */
790
+ xmlSchemaContentType contentType;
791
+ const xmlChar *refPrefix; /* Deprecated; not used */
792
+ xmlSchemaValPtr defVal; /* The compiled value constraint. */
793
+ void *idcs; /* The identity-constraint defs */
794
+ };
795
+
796
+ /*
797
+ * XML_SCHEMAS_FACET_UNKNOWN:
798
+ *
799
+ * unknown facet handling
800
+ */
801
+ #define XML_SCHEMAS_FACET_UNKNOWN 0
802
+ /*
803
+ * XML_SCHEMAS_FACET_PRESERVE:
804
+ *
805
+ * preserve the type of the facet
806
+ */
807
+ #define XML_SCHEMAS_FACET_PRESERVE 1
808
+ /*
809
+ * XML_SCHEMAS_FACET_REPLACE:
810
+ *
811
+ * replace the type of the facet
812
+ */
813
+ #define XML_SCHEMAS_FACET_REPLACE 2
814
+ /*
815
+ * XML_SCHEMAS_FACET_COLLAPSE:
816
+ *
817
+ * collapse the types of the facet
818
+ */
819
+ #define XML_SCHEMAS_FACET_COLLAPSE 3
820
+ /**
821
+ * A facet definition.
822
+ */
823
+ struct _xmlSchemaFacet {
824
+ xmlSchemaTypeType type; /* The kind of type */
825
+ struct _xmlSchemaFacet *next;/* the next type if in a sequence ... */
826
+ const xmlChar *value; /* The original value */
827
+ const xmlChar *id; /* Obsolete */
828
+ xmlSchemaAnnotPtr annot;
829
+ xmlNodePtr node;
830
+ int fixed; /* XML_SCHEMAS_FACET_PRESERVE, etc. */
831
+ int whitespace;
832
+ xmlSchemaValPtr val; /* The compiled value */
833
+ xmlRegexpPtr regexp; /* The regex for patterns */
834
+ };
835
+
836
+ /**
837
+ * A notation definition.
838
+ */
839
+ typedef struct _xmlSchemaNotation xmlSchemaNotation;
840
+ typedef xmlSchemaNotation *xmlSchemaNotationPtr;
841
+ struct _xmlSchemaNotation {
842
+ xmlSchemaTypeType type; /* The kind of type */
843
+ const xmlChar *name;
844
+ xmlSchemaAnnotPtr annot;
845
+ const xmlChar *identifier;
846
+ const xmlChar *targetNamespace;
847
+ };
848
+
849
+ /*
850
+ * TODO: Actually all those flags used for the schema should sit
851
+ * on the schema parser context, since they are used only
852
+ * during parsing an XML schema document, and not available
853
+ * on the component level as per spec.
854
+ */
855
+ /**
856
+ * XML_SCHEMAS_QUALIF_ELEM:
857
+ *
858
+ * Reflects elementFormDefault == qualified in
859
+ * an XML schema document.
860
+ */
861
+ #define XML_SCHEMAS_QUALIF_ELEM 1 << 0
862
+ /**
863
+ * XML_SCHEMAS_QUALIF_ATTR:
864
+ *
865
+ * Reflects attributeFormDefault == qualified in
866
+ * an XML schema document.
867
+ */
868
+ #define XML_SCHEMAS_QUALIF_ATTR 1 << 1
869
+ /**
870
+ * XML_SCHEMAS_FINAL_DEFAULT_EXTENSION:
871
+ *
872
+ * the schema has "extension" in the set of finalDefault.
873
+ */
874
+ #define XML_SCHEMAS_FINAL_DEFAULT_EXTENSION 1 << 2
875
+ /**
876
+ * XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION:
877
+ *
878
+ * the schema has "restriction" in the set of finalDefault.
879
+ */
880
+ #define XML_SCHEMAS_FINAL_DEFAULT_RESTRICTION 1 << 3
881
+ /**
882
+ * XML_SCHEMAS_FINAL_DEFAULT_LIST:
883
+ *
884
+ * the schema has "list" in the set of finalDefault.
885
+ */
886
+ #define XML_SCHEMAS_FINAL_DEFAULT_LIST 1 << 4
887
+ /**
888
+ * XML_SCHEMAS_FINAL_DEFAULT_UNION:
889
+ *
890
+ * the schema has "union" in the set of finalDefault.
891
+ */
892
+ #define XML_SCHEMAS_FINAL_DEFAULT_UNION 1 << 5
893
+ /**
894
+ * XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION:
895
+ *
896
+ * the schema has "extension" in the set of blockDefault.
897
+ */
898
+ #define XML_SCHEMAS_BLOCK_DEFAULT_EXTENSION 1 << 6
899
+ /**
900
+ * XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION:
901
+ *
902
+ * the schema has "restriction" in the set of blockDefault.
903
+ */
904
+ #define XML_SCHEMAS_BLOCK_DEFAULT_RESTRICTION 1 << 7
905
+ /**
906
+ * XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION:
907
+ *
908
+ * the schema has "substitution" in the set of blockDefault.
909
+ */
910
+ #define XML_SCHEMAS_BLOCK_DEFAULT_SUBSTITUTION 1 << 8
911
+ /**
912
+ * XML_SCHEMAS_INCLUDING_CONVERT_NS:
913
+ *
914
+ * the schema is currently including an other schema with
915
+ * no target namespace.
916
+ */
917
+ #define XML_SCHEMAS_INCLUDING_CONVERT_NS 1 << 9
918
+ /**
919
+ * _xmlSchema:
920
+ *
921
+ * A Schemas definition
922
+ */
923
+ struct _xmlSchema {
924
+ const xmlChar *name; /* schema name */
925
+ const xmlChar *targetNamespace; /* the target namespace */
926
+ const xmlChar *version;
927
+ const xmlChar *id; /* Obsolete */
928
+ xmlDocPtr doc;
929
+ xmlSchemaAnnotPtr annot;
930
+ int flags;
931
+
932
+ xmlHashTablePtr typeDecl;
933
+ xmlHashTablePtr attrDecl;
934
+ xmlHashTablePtr attrgrpDecl;
935
+ xmlHashTablePtr elemDecl;
936
+ xmlHashTablePtr notaDecl;
937
+
938
+ xmlHashTablePtr schemasImports;
939
+
940
+ void *_private; /* unused by the library for users or bindings */
941
+ xmlHashTablePtr groupDecl;
942
+ xmlDictPtr dict;
943
+ void *includes; /* the includes, this is opaque for now */
944
+ int preserve; /* whether to free the document */
945
+ int counter; /* used to give anonymous components unique names */
946
+ xmlHashTablePtr idcDef; /* All identity-constraint defs. */
947
+ void *volatiles; /* Obsolete */
948
+ };
949
+
950
+ XMLPUBFUN void XMLCALL xmlSchemaFreeType (xmlSchemaTypePtr type);
951
+ XMLPUBFUN void XMLCALL xmlSchemaFreeWildcard(xmlSchemaWildcardPtr wildcard);
952
+
953
+ #ifdef __cplusplus
954
+ }
955
+ #endif
956
+
957
+ #endif /* LIBXML_SCHEMAS_ENABLED */
958
+ #endif /* __XML_SCHEMA_INTERNALS_H__ */