1 /*
2 * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
3 * @LastModified: Oct 2017
4 */
5 /*
6 * Licensed to the Apache Software Foundation (ASF) under one or more
7 * contributor license agreements. See the NOTICE file distributed with
8 * this work for additional information regarding copyright ownership.
9 * The ASF licenses this file to You under the Apache License, Version 2.0
10 * (the "License"); you may not use this file except in compliance with
11 * the License. You may obtain a copy of the License at
12 *
13 * http://www.apache.org/licenses/LICENSE-2.0
14 *
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 */
21
22 package com.sun.org.apache.xerces.internal.impl;
23
24 import java.util.Enumeration;
25 import java.util.NoSuchElementException;
26
27 /**
28 * Commonly used constants.
29 *
30 * @xerces.internal
31 *
32 * @author Andy Clark, IBM
33 *
34 */
35 public final class Constants {
36
37 //
38 // Constants
39 //
40 // Schema Types:
41 public static final String NS_XMLSCHEMA = "http://www.w3.org/2001/XMLSchema".intern();
42 public static final String NS_DTD = "http://www.w3.org/TR/REC-xml".intern();
43
44 // Schema Versions:
45 public static final String W3C_XML_SCHEMA10_NS_URI = "http://www.w3.org/XML/XMLSchema/v1.0".intern();
46
47 // Schema features
48 public static final String SUN_SCHEMA_FEATURE_PREFIX = "http://java.sun.com/xml/schema/features/";
49 public static final String SUN_REPORT_IGNORED_ELEMENT_CONTENT_WHITESPACE = "report-ignored-element-content-whitespace";
50
51 //stax properties
52
53 public static final String ZEPHYR_PROPERTY_PREFIX = "http://java.sun.com/xml/stream/properties/" ;
54 public static final String STAX_PROPERTIES = "stax-properties" ;
55 public static final String STAX_ENTITY_RESOLVER_PROPERTY = "internal/stax-entity-resolver";
56 public static final String STAX_REPORT_CDATA_EVENT = "report-cdata-event";
57 public static final String READER_IN_DEFINED_STATE = ZEPHYR_PROPERTY_PREFIX + "reader-in-defined-state" ;
58 public static final String ADD_NAMESPACE_DECL_AS_ATTRIBUTE = "add-namespacedecl-as-attrbiute";
59 public static final String ESCAPE_CHARACTERS = "escapeCharacters";
60 public static final String REUSE_INSTANCE = "reuse-instance" ;
61
62 //DOM properties
63 public static final String SUN_DOM_PROPERTY_PREFIX = "http://java.sun.com/xml/dom/properties/" ;
64 public static final String SUN_DOM_ANCESTOR_CHECCK = "ancestor-check";
65
66 /**
67 * If true, ignore DOCTYPE declaration as if it wasn't present at all.
68 * Note that this is a violation of the XML recommendation.
69 * The full property name is prefixed by {@link #ZEPHYR_PROPERTY_PREFIX}.
70 */
71 public static final String IGNORE_EXTERNAL_DTD = "ignore-external-dtd";
72
73 // sax features
74
75 /** SAX feature prefix ("http://xml.org/sax/features/"). */
76 public static final String SAX_FEATURE_PREFIX = "http://xml.org/sax/features/";
77
78 public static final String NAMESPACES_FEATURE = "namespaces";
79
80 /** Namespace prefixes feature ("namespace-prefixes"). */
81 public static final String NAMESPACE_PREFIXES_FEATURE = "namespace-prefixes";
82
83 /** String interning feature ("string-interning"). */
84 public static final String STRING_INTERNING_FEATURE = "string-interning";
85
86 /** Validation feature ("validation"). */
87 public static final String VALIDATION_FEATURE = "validation";
88
89 /** External general entities feature ("external-general-entities "). */
90 public static final String EXTERNAL_GENERAL_ENTITIES_FEATURE = "external-general-entities";
91
92 /** External parameter entities feature ("external-parameter-entities "). */
93 public static final String EXTERNAL_PARAMETER_ENTITIES_FEATURE = "external-parameter-entities";
94
95 /** Lexical handler parameter entities feature ("lexical-handler/parameter-entities"). */
96 public static final String LEXICAL_HANDLER_PARAMETER_ENTITIES_FEATURE = "lexical-handler/parameter-entities";
97
98 /** Is standalone feature ("is-standalone"). */
99 public static final String IS_STANDALONE_FEATURE = "is-standalone";
100
101 /** Resolve DTD URIs feature ("resolve-dtd-uris"). */
102 public static final String RESOLVE_DTD_URIS_FEATURE = "resolve-dtd-uris";
103
104 /** Use Attributes2 feature ("use-attributes2"). */
105 public static final String USE_ATTRIBUTES2_FEATURE = "use-attributes2";
106
107 /** Use Locator2 feature ("use-locator2"). */
108 public static final String USE_LOCATOR2_FEATURE = "use-locator2";
109
110 /** Use EntityResolver2 feature ("use-entity-resolver2"). */
111 public static final String USE_ENTITY_RESOLVER2_FEATURE = "use-entity-resolver2";
112
113 /** Unicode normalization checking feature ("unicode-normalization-checking"). */
114 public static final String UNICODE_NORMALIZATION_CHECKING_FEATURE = "unicode-normalization-checking";
115
116 /** xmlns URIs feature ("xmlns-uris"). */
117 public static final String XMLNS_URIS_FEATURE = "xmlns-uris";
118
119 /** XML 1.1 feature ("xml-1.1"). */
120 public static final String XML_11_FEATURE = "xml-1.1";
121
122 /** Allow unparsed entity and notation declaration events to be sent after the end DTD event ("allow-dtd-events-after-endDTD") */
123 public static final String ALLOW_DTD_EVENTS_AFTER_ENDDTD_FEATURE = "allow-dtd-events-after-endDTD";
124
125 // sax properties
126
127 /** SAX property prefix ("http://xml.org/sax/properties/"). */
128 public static final String SAX_PROPERTY_PREFIX = "http://xml.org/sax/properties/";
129
130 /** Declaration handler property ("declaration-handler"). */
131 public static final String DECLARATION_HANDLER_PROPERTY = "declaration-handler";
132
133 /** Lexical handler property ("lexical-handler"). */
134 public static final String LEXICAL_HANDLER_PROPERTY = "lexical-handler";
135
136 /** DOM node property ("dom-node"). */
137 public static final String DOM_NODE_PROPERTY = "dom-node";
138
139 /** XML string property ("xml-string"). */
140 public static final String XML_STRING_PROPERTY = "xml-string";
141
142 public static final String FEATURE_SECURE_PROCESSING = "http://javax.xml.XMLConstants/feature/secure-processing";
143
144 // Oracle Feature:
145 /**
146 * <p>Use Service Mechanism</p>
147 *
148 * <ul>
149 * <li>
150 * {@code true} instruct an object to use service mechanism to
151 * find a service implementation. This is the default behavior.
152 * </li>
153 * <li>
154 * {@code false} instruct an object to skip service mechanism and
155 * use the default implementation for that service.
156 * </li>
157 * </ul>
158 */
159 public static final String ORACLE_FEATURE_SERVICE_MECHANISM = "http://www.oracle.com/feature/use-service-mechanism";
160
161 /** Document XML version property ("document-xml-version"). */
162 public static final String DOCUMENT_XML_VERSION_PROPERTY = "document-xml-version";
163
164
165 //
166 // JAXP properties
167 //
168
169 /** JAXP property prefix ("http://java.sun.com/xml/jaxp/properties/"). */
170 public static final String JAXP_PROPERTY_PREFIX =
171 "http://java.sun.com/xml/jaxp/properties/";
172
173 /** JAXP schemaSource property: when used internally may include DTD sources (DOM) */
174 public static final String SCHEMA_SOURCE = "schemaSource";
175
176 /** JAXP schemaSource language: when used internally may include DTD namespace (DOM) */
177 public static final String SCHEMA_LANGUAGE = "schemaLanguage";
178
179 /** JAXP Standard property prefix ("http://javax.xml.XMLConstants/property/"). */
180 public static final String JAXPAPI_PROPERTY_PREFIX =
181 "http://javax.xml.XMLConstants/property/";
182
183 /** Oracle JAXP property prefix ("http://www.oracle.com/xml/jaxp/properties/"). */
184 public static final String ORACLE_JAXP_PROPERTY_PREFIX =
185 "http://www.oracle.com/xml/jaxp/properties/";
186
187 public static final String XML_SECURITY_PROPERTY_MANAGER =
188 ORACLE_JAXP_PROPERTY_PREFIX + "xmlSecurityPropertyManager";
189
190 //System Properties corresponding to ACCESS_EXTERNAL_* properties
191 public static final String SP_ACCESS_EXTERNAL_DTD = "javax.xml.accessExternalDTD";
192 public static final String SP_ACCESS_EXTERNAL_SCHEMA = "javax.xml.accessExternalSchema";
193 //all access keyword
194 public static final String ACCESS_EXTERNAL_ALL = "all";
195
196 /**
197 * Default value when FEATURE_SECURE_PROCESSING (FSP) is set to true
198 */
199 public static final String EXTERNAL_ACCESS_DEFAULT_FSP = "";
200
201 /**
202 * FEATURE_SECURE_PROCESSING (FSP) is true by default
203 */
204 public static final String EXTERNAL_ACCESS_DEFAULT = ACCESS_EXTERNAL_ALL;
205
206 //
207 // Implementation limits: corresponding System Properties of the above
208 // API properties
209 //
210 /**
211 * JDK entity expansion limit; Note that the existing system property
212 * "entityExpansionLimit" with no prefix is still observed
213 */
214 public static final String JDK_ENTITY_EXPANSION_LIMIT =
215 ORACLE_JAXP_PROPERTY_PREFIX + "entityExpansionLimit";
216
217 /**
218 * JDK element attribute limit; Note that the existing system property
219 * "elementAttributeLimit" with no prefix is still observed
220 */
221 public static final String JDK_ELEMENT_ATTRIBUTE_LIMIT =
222 ORACLE_JAXP_PROPERTY_PREFIX + "elementAttributeLimit";
223
224 /**
225 * JDK maxOccur limit; Note that the existing system property
226 * "maxOccurLimit" with no prefix is still observed
227 */
228 public static final String JDK_MAX_OCCUR_LIMIT =
229 ORACLE_JAXP_PROPERTY_PREFIX + "maxOccurLimit";
230
231 /**
232 * JDK total entity size limit
233 */
234 public static final String JDK_TOTAL_ENTITY_SIZE_LIMIT =
235 ORACLE_JAXP_PROPERTY_PREFIX + "totalEntitySizeLimit";
236
237 /**
238 * JDK maximum general entity size limit
239 */
240 public static final String JDK_GENERAL_ENTITY_SIZE_LIMIT =
241 ORACLE_JAXP_PROPERTY_PREFIX + "maxGeneralEntitySizeLimit";
242
243 /**
244 * JDK node count limit in entities that limits the total number of nodes
245 * in all of entity references.
246 */
247 public static final String JDK_ENTITY_REPLACEMENT_LIMIT =
248 ORACLE_JAXP_PROPERTY_PREFIX + "entityReplacementLimit";
249
250 /**
251 * JDK maximum parameter entity size limit
252 */
253 public static final String JDK_PARAMETER_ENTITY_SIZE_LIMIT =
254 ORACLE_JAXP_PROPERTY_PREFIX + "maxParameterEntitySizeLimit";
255 /**
256 * JDK maximum XML name limit
257 */
258 public static final String JDK_XML_NAME_LIMIT =
259 ORACLE_JAXP_PROPERTY_PREFIX + "maxXMLNameLimit";
260
261 /**
262 * JDK maxElementDepth limit
263 */
264 public static final String JDK_MAX_ELEMENT_DEPTH =
265 ORACLE_JAXP_PROPERTY_PREFIX + "maxElementDepth";
266
267 /**
268 * JDK property to allow printing out information from the limit analyzer
269 */
270 public static final String JDK_ENTITY_COUNT_INFO =
271 ORACLE_JAXP_PROPERTY_PREFIX + "getEntityCountInfo";
272
273 //
274 // Implementation limits: API properties
275 //
276 /**
277 * JDK entity expansion limit; Note that the existing system property
278 * "entityExpansionLimit" with no prefix is still observed
279 */
280 public static final String SP_ENTITY_EXPANSION_LIMIT = "jdk.xml.entityExpansionLimit";
281
282 /**
283 * JDK element attribute limit; Note that the existing system property
284 * "elementAttributeLimit" with no prefix is still observed
285 */
286 public static final String SP_ELEMENT_ATTRIBUTE_LIMIT = "jdk.xml.elementAttributeLimit";
287
288 /**
289 * JDK maxOccur limit; Note that the existing system property
290 * "maxOccurLimit" with no prefix is still observed
291 */
292 public static final String SP_MAX_OCCUR_LIMIT = "jdk.xml.maxOccurLimit";
293
294 /**
295 * JDK total entity size limit
296 */
297 public static final String SP_TOTAL_ENTITY_SIZE_LIMIT = "jdk.xml.totalEntitySizeLimit";
298
299 /**
300 * JDK maximum general entity size limit
301 */
302 public static final String SP_GENERAL_ENTITY_SIZE_LIMIT = "jdk.xml.maxGeneralEntitySizeLimit";
303
304 /**
305 * JDK node count limit in entities that limits the total number of nodes
306 * in all of entity references.
307 */
308 public static final String SP_ENTITY_REPLACEMENT_LIMIT = "jdk.xml.entityReplacementLimit";
309
310 /**
311 * JDK maximum parameter entity size limit
312 */
313 public static final String SP_PARAMETER_ENTITY_SIZE_LIMIT = "jdk.xml.maxParameterEntitySizeLimit";
314 /**
315 * JDK maximum XML name limit
316 */
317 public static final String SP_XML_NAME_LIMIT = "jdk.xml.maxXMLNameLimit";
318
319 /**
320 * JDK maxElementDepth limit
321 */
322 public static final String SP_MAX_ELEMENT_DEPTH = "jdk.xml.maxElementDepth";
323
324 //legacy System Properties
325 public final static String ENTITY_EXPANSION_LIMIT = "entityExpansionLimit";
326 public static final String ELEMENT_ATTRIBUTE_LIMIT = "elementAttributeLimit" ;
327 public final static String MAX_OCCUR_LIMIT = "maxOccurLimit";
328
329 /**
330 * A string "yes" that can be used for properties such as getEntityCountInfo
331 */
332 public static final String JDK_YES = "yes";
333
334 //
335 // DOM features
336 //
337
338 /** Comments feature ("include-comments"). */
339 public static final String INCLUDE_COMMENTS_FEATURE = "include-comments";
340
341 /** Create cdata nodes feature ("create-cdata-nodes"). */
342 public static final String CREATE_CDATA_NODES_FEATURE = "create-cdata-nodes";
343
344 /** Feature id: load as infoset. */
345 public static final String LOAD_AS_INFOSET = "load-as-infoset";
346
347
348 //
349 // Constants: DOM Level 3 feature ids
350 //
351
352 public static final String DOM_CANONICAL_FORM = "canonical-form";
353 public static final String DOM_CDATA_SECTIONS ="cdata-sections";
354
355 public static final String DOM_COMMENTS = "comments";
356
357 // REVISIT: this feature seems to have no effect for Xerces
358
359 public static final String DOM_CHARSET_OVERRIDES_XML_ENCODING =
360 "charset-overrides-xml-encoding";
361
362 public static final String DOM_DATATYPE_NORMALIZATION = "datatype-normalization";
363
364 public static final String DOM_ENTITIES = "entities";
365 public static final String DOM_INFOSET = "infoset";
366 public static final String DOM_NAMESPACES = "namespaces";
367 public static final String DOM_NAMESPACE_DECLARATIONS = "namespace-declarations";
368 public static final String DOM_SUPPORTED_MEDIATYPES_ONLY =
369 "supported-media-types-only";
370
371 public static final String DOM_VALIDATE_IF_SCHEMA = "validate-if-schema";
372 public static final String DOM_VALIDATE = "validate";
373 public static final String DOM_ELEMENT_CONTENT_WHITESPACE =
374 "element-content-whitespace";
375
376 // DOM Level 3 features defined in Core:
377 public static final String DOM_DISCARD_DEFAULT_CONTENT = "discard-default-content";
378 public static final String DOM_NORMALIZE_CHARACTERS = "normalize-characters";
379 public static final String DOM_CHECK_CHAR_NORMALIZATION = "check-character-normalization";
380 public static final String DOM_WELLFORMED = "well-formed";
381 public static final String DOM_SPLIT_CDATA = "split-cdata-sections";
382
383 // Load and Save
384 public static final String DOM_FORMAT_PRETTY_PRINT = "format-pretty-print";
385 public static final String DOM_XMLDECL = "xml-declaration";
386 public static final String DOM_UNKNOWNCHARS = "unknown-characters";
387 public static final String DOM_CERTIFIED = "certified";
388 public static final String DOM_DISALLOW_DOCTYPE = "disallow-doctype";
389 public static final String DOM_IGNORE_UNKNOWN_CHARACTER_DENORMALIZATIONS = "ignore-unknown-character-denormalizations";
390
391 // DOM Properties
392 public static final String DOM_RESOURCE_RESOLVER = "resource-resolver";
393 public static final String DOM_ERROR_HANDLER = "error-handler";
394 public static final String DOM_SCHEMA_TYPE = "schema-type";
395 public static final String DOM_SCHEMA_LOCATION = "schema-location";
396 public static final String DOM_ANCESTOR_CHECCK = "ancestor-check";
397 // XSModel
398 public static final String DOM_PSVI = "psvi";
399
400
401 // xerces features
402
403 /** Xerces features prefix ("http://apache.org/xml/features/"). */
404 public static final String XERCES_FEATURE_PREFIX = "http://apache.org/xml/features/";
405
406 /** Schema validation feature ("validation/schema"). */
407 public static final String SCHEMA_VALIDATION_FEATURE = "validation/schema";
408
409 /** Expose schema normalized values */
410 public static final String SCHEMA_NORMALIZED_VALUE = "validation/schema/normalized-value";
411
412 /** Send schema default value via characters() */
413 public static final String SCHEMA_ELEMENT_DEFAULT = "validation/schema/element-default";
414
415 /** Schema full constraint checking ("validation/schema-full-checking"). */
416 public static final String SCHEMA_FULL_CHECKING = "validation/schema-full-checking";
417
418 /** Augment Post-Schema-Validation-Infoset */
419 public static final String SCHEMA_AUGMENT_PSVI = "validation/schema/augment-psvi";
420
421 /** Dynamic validation feature ("validation/dynamic"). */
422 public static final String DYNAMIC_VALIDATION_FEATURE = "validation/dynamic";
423
424 /** Warn on duplicate attribute declaration feature ("validation/warn-on-duplicate-attdef"). */
425 public static final String WARN_ON_DUPLICATE_ATTDEF_FEATURE = "validation/warn-on-duplicate-attdef";
426
427 /** Warn on undeclared element feature ("validation/warn-on-undeclared-elemdef"). */
428 public static final String WARN_ON_UNDECLARED_ELEMDEF_FEATURE = "validation/warn-on-undeclared-elemdef";
429
430 /** Warn on duplicate entity declaration feature ("warn-on-duplicate-entitydef"). */
431 public static final String WARN_ON_DUPLICATE_ENTITYDEF_FEATURE = "warn-on-duplicate-entitydef";
432
433 /** Allow Java encoding names feature ("allow-java-encodings"). */
434 public static final String ALLOW_JAVA_ENCODINGS_FEATURE = "allow-java-encodings";
435
436 /** Disallow DOCTYPE declaration feature ("disallow-doctype-decl"). */
437 public static final String DISALLOW_DOCTYPE_DECL_FEATURE = "disallow-doctype-decl";
438
439 /** Continue after fatal error feature ("continue-after-fatal-error"). */
440 public static final String CONTINUE_AFTER_FATAL_ERROR_FEATURE = "continue-after-fatal-error";
441
442 /** Load dtd grammar when nonvalidating feature ("nonvalidating/load-dtd-grammar"). */
443 public static final String LOAD_DTD_GRAMMAR_FEATURE = "nonvalidating/load-dtd-grammar";
444
445 /** Load external dtd when nonvalidating feature ("nonvalidating/load-external-dtd"). */
446 public static final String LOAD_EXTERNAL_DTD_FEATURE = "nonvalidating/load-external-dtd";
447
448 /** Defer node expansion feature ("dom/defer-node-expansion"). */
449 public static final String DEFER_NODE_EXPANSION_FEATURE = "dom/defer-node-expansion";
450
451 /** Create entity reference nodes feature ("dom/create-entity-ref-nodes"). */
452 public static final String CREATE_ENTITY_REF_NODES_FEATURE = "dom/create-entity-ref-nodes";
453
454 /** Include ignorable whitespace feature ("dom/include-ignorable-whitespace"). */
455 public static final String INCLUDE_IGNORABLE_WHITESPACE = "dom/include-ignorable-whitespace";
456
457 /** Default attribute values feature ("validation/default-attribute-values"). */
458 public static final String DEFAULT_ATTRIBUTE_VALUES_FEATURE = "validation/default-attribute-values";
459
460 /** Validate content models feature ("validation/validate-content-models"). */
461 public static final String VALIDATE_CONTENT_MODELS_FEATURE = "validation/validate-content-models";
462
463 /** Validate datatypes feature ("validation/validate-datatypes"). */
464 public static final String VALIDATE_DATATYPES_FEATURE = "validation/validate-datatypes";
465
466 /** Balance syntax trees feature ("validation/balance-syntax-trees"). */
467 public static final String BALANCE_SYNTAX_TREES = "validation/balance-syntax-trees";
468
469 /** Notify character references feature (scanner/notify-char-refs"). */
470 public static final String NOTIFY_CHAR_REFS_FEATURE = "scanner/notify-char-refs";
471
472 /** Notify built-in (&amp;, etc.) references feature (scanner/notify-builtin-refs"). */
473 public static final String NOTIFY_BUILTIN_REFS_FEATURE = "scanner/notify-builtin-refs";
474
475 /** Standard URI conformant feature ("standard-uri-conformant"). */
476 public static final String STANDARD_URI_CONFORMANT_FEATURE = "standard-uri-conformant";
477
478 /** Generate synthetic annotations feature ("generate-synthetic-annotations"). */
479 public static final String GENERATE_SYNTHETIC_ANNOTATIONS_FEATURE = "generate-synthetic-annotations";
480
481 /** Validate annotations feature ("validate-annotations"). */
482 public static final String VALIDATE_ANNOTATIONS_FEATURE = "validate-annotations";
483
484
485 /** Honour all schemaLocations feature ("honour-all-schemaLocations"). */
486 public static final String HONOUR_ALL_SCHEMALOCATIONS_FEATURE = "honour-all-schemaLocations";
487
488 /** Namespace growth feature ("namespace-growth"). */
489 public static final String NAMESPACE_GROWTH_FEATURE = "namespace-growth";
490
491 /** Tolerate duplicates feature ("internal/tolerate-duplicates"). */
492 public static final String TOLERATE_DUPLICATES_FEATURE = "internal/tolerate-duplicates";
493
494 /** XInclude processing feature ("xinclude"). */
495 public static final String XINCLUDE_FEATURE = "xinclude";
496
497 /** XInclude fixup base URIs feature ("xinclude/fixup-base-uris"). */
498 public static final String XINCLUDE_FIXUP_BASE_URIS_FEATURE = "xinclude/fixup-base-uris";
499
500 /** XInclude fixup language feature ("xinclude/fixup-language"). */
501 public static final String XINCLUDE_FIXUP_LANGUAGE_FEATURE = "xinclude/fixup-language";
502
503 /**
504 * Feature to ignore xsi:type attributes on elements during validation,
505 * until a global element declaration is found. ("validation/schema/ignore-xsi-type-until-elemdecl")
506 * If this feature is on when validating a document, then beginning at the validation root
507 * element, xsi:type attributes are ignored until a global element declaration is
508 * found for an element. Once a global element declaration has been found, xsi:type
509 * attributes will start being processed for the sub-tree beginning at the element for
510 * which the declaration was found.
511 *
512 * Suppose an element A has two element children, B and C.
513 *
514 * If a global element declaration is found for A, xsi:type attributes on A, B and C,
515 * and all of B and C's descendents, will be processed.
516 *
517 * If no global element declaration is found for A or B, but one is found for C,
518 * then xsi:type attributes will be ignored on A and B (and any descendents of B,
519 * until a global element declaration is found), but xsi:type attributes will be
520 * processed for C and all of C's descendents.
521 *
522 * Once xsi:type attributes stop being ignored for a subtree, they do not start
523 * being ignored again, even if more elements are encountered for which no global
524 * element declaration can be found.
525 */
526 public static final String IGNORE_XSI_TYPE_FEATURE = "validation/schema/ignore-xsi-type-until-elemdecl";
527
528 /** Perform checking of ID/IDREFs ("validation/id-idref-checking") */
529 public static final String ID_IDREF_CHECKING_FEATURE = "validation/id-idref-checking";
530
531 /** Feature to ignore errors caused by identity constraints ("validation/identity-constraint-checking") */
532 public static final String IDC_CHECKING_FEATURE = "validation/identity-constraint-checking";
533
534 /** Feature to ignore errors caused by unparsed entities ("validation/unparsed-entity-checking") */
535 public static final String UNPARSED_ENTITY_CHECKING_FEATURE = "validation/unparsed-entity-checking";
536
537 /**
538 * Internal feature. When set to true the schema validator will only use
539 * schema components from the grammar pool provided.
540 */
541 public static final String USE_GRAMMAR_POOL_ONLY_FEATURE = "internal/validation/schema/use-grammar-pool-only";
542
543 /** Internal performance related feature:
544 * false - the parser settings (features/properties) have not changed between 2 parses
545 * true - the parser settings have changed between 2 parses
546 * NOTE: this feature should only be set by the parser configuration.
547 */
548 public static final String PARSER_SETTINGS = "internal/parser-settings";
549
550
551 /** Feature to make XML Processor XInclude Aware */
552 public static final String XINCLUDE_AWARE = "xinclude-aware";
553
554 /** Ignore xsi:schemaLocation and xsi:noNamespaceSchemaLocation. */
555 public static final String IGNORE_SCHEMA_LOCATION_HINTS = "validation/schema/ignore-schema-location-hints";
556
557 /**
558 * When true, the schema processor will change characters events
559 * to ignorableWhitespaces events, when characters are expected to
560 * only contain ignorable whitespaces.
561 */
562 public static final String CHANGE_IGNORABLE_CHARACTERS_INTO_IGNORABLE_WHITESPACES =
563 "validation/change-ignorable-characters-into-ignorable-whitespaces";
564
565 // xerces properties
566
567 /** Xerces properties prefix ("http://apache.org/xml/properties/"). */
568 public static final String XERCES_PROPERTY_PREFIX = "http://apache.org/xml/properties/";
569
570 /** Current element node property ("dom/current-element-node"). */
571 public static final String CURRENT_ELEMENT_NODE_PROPERTY = "dom/current-element-node";
572
573 /** Document class name property ("dom/document-class-name"). */
574 public static final String DOCUMENT_CLASS_NAME_PROPERTY = "dom/document-class-name";
575
576 /** Symbol table property ("internal/symbol-table"). */
577 public static final String SYMBOL_TABLE_PROPERTY = "internal/symbol-table";
578
579 /** Error reporter property ("internal/error-reporter"). */
580 public static final String ERROR_REPORTER_PROPERTY = "internal/error-reporter";
581
582 /** Error handler property ("internal/error-handler"). */
583 public static final String ERROR_HANDLER_PROPERTY = "internal/error-handler";
584
585 /** XInclude handler property ("internal/xinclude-handler"). */
586 public static final String XINCLUDE_HANDLER_PROPERTY = "internal/xinclude-handler";
587
588 /** XPointer handler property ("internal/xpointer-handler"). */
589 public static final String XPOINTER_HANDLER_PROPERTY = "internal/xpointer-handler";
590
591 /** Entity manager property ("internal/entity-manager"). */
592 public static final String ENTITY_MANAGER_PROPERTY = "internal/entity-manager";
593 /** Input buffer size property ("input-buffer-size"). */
594 public static final String BUFFER_SIZE_PROPERTY = "input-buffer-size";
595
596 /** Security manager property ("security-manager"). */
597 public static final String SECURITY_MANAGER_PROPERTY = "security-manager";
598
599 /** Locale property ("locale"). */
600 public static final String LOCALE_PROPERTY = "locale";
601
602 /** property identifier: security manager. */
603 public static final String SECURITY_MANAGER =
604 Constants.XERCES_PROPERTY_PREFIX + Constants.SECURITY_MANAGER_PROPERTY;
605
606
607 public static final String ENTITY_RESOLVER_PROPERTY = "internal/entity-resolver";
608
609 /** Grammar pool property ("internal/grammar-pool"). */
610 public static final String XMLGRAMMAR_POOL_PROPERTY = "internal/grammar-pool";
611
612 /** Datatype validator factory ("internal/datatype-validator-factory"). */
613 public static final String DATATYPE_VALIDATOR_FACTORY_PROPERTY = "internal/datatype-validator-factory";
614
615 /** Document scanner property ("internal/document-scanner"). */
616 public static final String DOCUMENT_SCANNER_PROPERTY = "internal/document-scanner";
617
618 /** DTD scanner property ("internal/dtd-scanner"). */
619 public static final String DTD_SCANNER_PROPERTY = "internal/dtd-scanner";
620
621 /** DTD processor property ("internal/dtd-processor"). */
622 public static final String DTD_PROCESSOR_PROPERTY = "internal/dtd-processor";
623
624 /** Validator property ("internal/validator"). */
625 public static final String VALIDATOR_PROPERTY = "internal/validator";
626
627 /** Validator property ("internal/validator/dtd"). */
628 public static final String DTD_VALIDATOR_PROPERTY = "internal/validator/dtd";
629
630 /** Validator property ("internal/validator/schema"). */
631 public static final String SCHEMA_VALIDATOR_PROPERTY = "internal/validator/schema";
632
633 /** No namespace schema location property ("schema/external-schemaLocation"). */
634 public static final String SCHEMA_LOCATION = "schema/external-schemaLocation";
635
636 /** Schema location property ("schema/external-noNamespaceSchemaLocation"). */
637 public static final String SCHEMA_NONS_LOCATION = "schema/external-noNamespaceSchemaLocation";
638
639 /** Namespace binder property ("internal/namespace-binder"). */
640 public static final String NAMESPACE_BINDER_PROPERTY = "internal/namespace-binder";
641
642 /** Namespace context property ("internal/namespace-context"). */
643 public static final String NAMESPACE_CONTEXT_PROPERTY = "internal/namespace-context";
644
645 /** Validation manager property ("internal/validation-manager"). */
646 public static final String VALIDATION_MANAGER_PROPERTY = "internal/validation-manager";
647
648 /** Schema type for the root element in a document ("validation/schema/root-type-definition"). */
649 public static final String ROOT_TYPE_DEFINITION_PROPERTY = "validation/schema/root-type-definition";
650
651 /** Schema element declaration for the root element in a document ("validation/schema/root-element-declaration"). */
652 public static final String ROOT_ELEMENT_DECLARATION_PROPERTY = "validation/schema/root-element-declaration";
653
654 /** XPointer Schema property ("xpointer-schema"). */
655 public static final String XPOINTER_SCHEMA_PROPERTY = "xpointer-schema";
656
657 /** Schema element declaration for the root element in a document ("internal/validation/schema/dv-factory"). */
658 public static final String SCHEMA_DV_FACTORY_PROPERTY = "internal/validation/schema/dv-factory";
659
660
661 // general constants
662
663 /** Element PSVI is stored in augmentations using string "ELEMENT_PSVI" */
664 public final static String ELEMENT_PSVI = "ELEMENT_PSVI";
665
666 /** Attribute PSVI is stored in augmentations using string "ATTRIBUTE_PSVI" */
667 public final static String ATTRIBUTE_PSVI = "ATTRIBUTE_PSVI";
668
669 /**
670 * Boolean indicating whether an attribute is declared in the DTD is stored
671 * in augmentations using the string "ATTRIBUTE_DECLARED". The absence of this
672 * augmentation indicates that the attribute was not declared in the DTD.
673 */
674 public final static String ATTRIBUTE_DECLARED = "ATTRIBUTE_DECLARED";
675
676
677 /**
678 * {@link org.w3c.dom.TypeInfo} associated with current element/attribute
679 * is stored in augmentations using this string as the key.
680 *
681 * This will ultimately controls {@link com.sun.org.apache.xerces.internal.parsers.AbstractDOMParser}
682 * regarding what object the DOM will return from
683 * {@link org.w3c.dom.Attr#getSchemaTypeInfo()} and
684 * {@link org.w3c.dom.Element#getSchemaTypeInfo()} and
685 */
686 public final static String TYPEINFO = "org.w3c.dom.TypeInfo";
687
688 /**
689 * Whether an attribute is an id or not is stored in augmentations
690 * using this string as the key. The value is {@link Boolean#TRUE}
691 * or {@link Boolean#FALSE}.
692 *
693 * This will ultimately controls {@link com.sun.org.apache.xerces.internal.parsers.AbstractDOMParser}
694 * about whether it will mark an attribute as ID or not.
695 */
696 public final static String ID_ATTRIBUTE = "ID_ATTRIBUTE";
697
698 // XML version constants
699
700 /**
701 * Boolean indicating whether an entity referenced in the document has
702 * not been read is stored in augmentations using the string "ENTITY_SKIPPED".
703 * The absence of this augmentation indicates that the entity had a
704 * declaration and was expanded.
705 */
706 public final static String ENTITY_SKIPPED = "ENTITY_SKIPPED";
707
708 /**
709 * Boolean indicating whether a character is a probable white space
710 * character (ch <= 0x20) that was the replacement text of a character
711 * reference is stored in augmentations using the string "CHAR_REF_PROBABLE_WS".
712 * The absence of this augmentation indicates that the character is not
713 * probable white space and/or was not included from a character reference.
714 */
715 public final static String CHAR_REF_PROBABLE_WS = "CHAR_REF_PROBABLE_WS";
716
717 /** Boolean indicating if this entity is the last opened entity.
718 *
719 *@see com.sun.org.apache.xerces.internal.impl.XMLEntityManager#endEntity()
720 *@see com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl#endEntity()
721 *@see com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl#endEntity()
722 */
723 public final static String LAST_ENTITY = "LAST_ENTITY";
724
725 // XML version constants
726 public final static short XML_VERSION_ERROR = -1;
727 public final static short XML_VERSION_1_0 = 1;
728 public final static short XML_VERSION_1_1 = 2;
729
730
731
732 // DOM related constants
733 public final static String ANONYMOUS_TYPE_NAMESPACE =
734 "http://apache.org/xml/xmlschema/1.0/anonymousTypes";
735
736
737
738 // Constant to enable Schema 1.1 support
739 public final static boolean SCHEMA_1_1_SUPPORT = false;
740 public final static short SCHEMA_VERSION_1_0 = 1;
741 public final static short SCHEMA_VERSION_1_0_EXTENDED = 2;
742
743 // private
744
745 /** SAX features. */
746 private static final String[] fgSAXFeatures = {
747 NAMESPACES_FEATURE,
748 NAMESPACE_PREFIXES_FEATURE,
749 STRING_INTERNING_FEATURE,
750 VALIDATION_FEATURE,
751 EXTERNAL_GENERAL_ENTITIES_FEATURE,
752 EXTERNAL_PARAMETER_ENTITIES_FEATURE,
753 };
754
755 /** SAX properties. */
756 private static final String[] fgSAXProperties = {
757 DECLARATION_HANDLER_PROPERTY,
758 LEXICAL_HANDLER_PROPERTY,
759 DOM_NODE_PROPERTY,
760 XML_STRING_PROPERTY,
761 };
762
763 /** Xerces features. */
764 private static final String[] fgXercesFeatures = {
765
766 SCHEMA_VALIDATION_FEATURE,
767 SCHEMA_FULL_CHECKING,
768 DYNAMIC_VALIDATION_FEATURE,
769 WARN_ON_DUPLICATE_ATTDEF_FEATURE,
770 WARN_ON_UNDECLARED_ELEMDEF_FEATURE,
771 ALLOW_JAVA_ENCODINGS_FEATURE,
772 CONTINUE_AFTER_FATAL_ERROR_FEATURE,
773 LOAD_DTD_GRAMMAR_FEATURE,
774 LOAD_EXTERNAL_DTD_FEATURE,
775 //DEFER_NODE_EXPANSION_FEATURE,
776 CREATE_ENTITY_REF_NODES_FEATURE,
777 XINCLUDE_AWARE,
778 INCLUDE_IGNORABLE_WHITESPACE,
779 //GRAMMAR_ACCESS_FEATURE,
780 DEFAULT_ATTRIBUTE_VALUES_FEATURE,
781 VALIDATE_CONTENT_MODELS_FEATURE,
782 VALIDATE_DATATYPES_FEATURE,
783 BALANCE_SYNTAX_TREES,
784 NOTIFY_CHAR_REFS_FEATURE,
785 NOTIFY_BUILTIN_REFS_FEATURE,
786 DISALLOW_DOCTYPE_DECL_FEATURE,
787 STANDARD_URI_CONFORMANT_FEATURE,
788 GENERATE_SYNTHETIC_ANNOTATIONS_FEATURE,
789 VALIDATE_ANNOTATIONS_FEATURE,
790 HONOUR_ALL_SCHEMALOCATIONS_FEATURE,
791 XINCLUDE_FEATURE,
792 XINCLUDE_FIXUP_BASE_URIS_FEATURE,
793 XINCLUDE_FIXUP_LANGUAGE_FEATURE,
794 IGNORE_XSI_TYPE_FEATURE,
795 ID_IDREF_CHECKING_FEATURE,
796 IDC_CHECKING_FEATURE,
797 UNPARSED_ENTITY_CHECKING_FEATURE,
798 NAMESPACE_GROWTH_FEATURE,
799 TOLERATE_DUPLICATES_FEATURE,
800 };
801
802 /** Xerces properties. */
803 private static final String[] fgXercesProperties = {
804 CURRENT_ELEMENT_NODE_PROPERTY,
805 DOCUMENT_CLASS_NAME_PROPERTY,
806 SYMBOL_TABLE_PROPERTY,
807 ERROR_HANDLER_PROPERTY,
808 ERROR_REPORTER_PROPERTY,
809 ENTITY_MANAGER_PROPERTY,
810 ENTITY_RESOLVER_PROPERTY,
811 XMLGRAMMAR_POOL_PROPERTY,
812 DATATYPE_VALIDATOR_FACTORY_PROPERTY,
813 DOCUMENT_SCANNER_PROPERTY,
814 DTD_SCANNER_PROPERTY,
815 VALIDATOR_PROPERTY,
816 SCHEMA_LOCATION,
817 SCHEMA_NONS_LOCATION,
818 VALIDATION_MANAGER_PROPERTY,
819 BUFFER_SIZE_PROPERTY,
820 SECURITY_MANAGER_PROPERTY,
821 ROOT_TYPE_DEFINITION_PROPERTY,
822 ROOT_ELEMENT_DECLARATION_PROPERTY,
823 LOCALE_PROPERTY,
824 SCHEMA_DV_FACTORY_PROPERTY,
825 };
826
827 /** Empty enumeration. */
828 private static final Enumeration<Object> fgEmptyEnumeration = new ArrayEnumeration(new Object[] {});
829
830 //
831 // Constructors
832 //
833
834 /** This class cannot be instantiated. */
835 private Constants() {}
836
837 //
838 // Public methods
839 //
840
841 // sax
842
843 /** Returns an enumeration of the SAX features. */
844 public static Enumeration<Object> getSAXFeatures() {
845 return fgSAXFeatures.length > 0
846 ? new ArrayEnumeration(fgSAXFeatures) : fgEmptyEnumeration;
847 } // getSAXFeatures():Enumeration
848
849 /** Returns an enumeration of the SAX properties. */
850 public static Enumeration<Object> getSAXProperties() {
851 return fgSAXProperties.length > 0
852 ? new ArrayEnumeration(fgSAXProperties) : fgEmptyEnumeration;
853 } // getSAXProperties():Enumeration
854
855 // xerces
856
857 /** Returns an enumeration of the Xerces features. */
858 public static Enumeration<Object> getXercesFeatures() {
859 return fgXercesFeatures.length > 0
860 ? new ArrayEnumeration(fgXercesFeatures) : fgEmptyEnumeration;
861 } // getXercesFeatures():Enumeration
862
863 /** Returns an enumeration of the Xerces properties. */
864 public static Enumeration<Object> getXercesProperties() {
865 return fgXercesProperties.length > 0
866 ? new ArrayEnumeration(fgXercesProperties) : fgEmptyEnumeration;
867 } // getXercesProperties():Enumeration
868
869 //
870 // Classes
871 //
872
873 /**
874 * An array enumeration.
875 *
876 * @author Andy Clark, IBM
877 */
878 static class ArrayEnumeration
879 implements Enumeration<Object> {
880
881 //
882 // Data
883 //
884
885 /** Array. */
886 private Object[] array;
887
888 /** Index. */
889 private int index;
890
891 //
892 // Constructors
893 //
894
895 /** Constructs an array enumeration. */
896 public ArrayEnumeration(Object[] array) {
897 this.array = array;
898 } // <init>(Object[])
899
900 //
901 // Enumeration methods
902 //
903
904 /**
905 * Tests if this enumeration contains more elements.
906 *
907 * @return <code>true</code> if this enumeration contains more elements;
908 * <code>false</code> otherwise.
909 * @since JDK1.0
910 */
911 public boolean hasMoreElements() {
912 return index < array.length;
913 } // hasMoreElement():boolean
914
915 /**
916 * Returns the next element of this enumeration.
917 *
918 * @return the next element of this enumeration.
919 * @exception NoSuchElementException if no more elements exist.
920 * @since JDK1.0
921 */
922 public Object nextElement() {
923 if (index < array.length) {
924 return array[index++];
925 }
926 throw new NoSuchElementException();
927 } // nextElement():Object
928
929 } // class ArrayEnumeration
930
931 //
932 // MAIN
933 //
934
935 /** Prints all of the constants to standard output. */
936 public static void main(String[] argv) {
937
938 print("SAX features:", SAX_FEATURE_PREFIX, fgSAXFeatures);
939 print("SAX properties:", SAX_PROPERTY_PREFIX, fgSAXProperties);
940 print("Xerces features:", XERCES_FEATURE_PREFIX, fgXercesFeatures);
941 print("Xerces properties:", XERCES_PROPERTY_PREFIX, fgXercesProperties);
942
943 } // main(String[])
944
945 /** Prints a list of features/properties. */
946 private static void print(String header, String prefix, Object[] array) {
947 System.out.print(header);
948 if (array.length > 0) {
949 System.out.println();
950 for (int i = 0; i < array.length; i++) {
951 System.out.print(" ");
952 System.out.print(prefix);
953 System.out.println(array[i]);
954 }
955 }
956 else {
957 System.out.println(" none.");
958 }
959 } // print(String,String,Object[])
960
961 } // class Constants
--- EOF ---