Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/jdk17u
Path: blob/master/src/java.xml/share/classes/module-info.java
67707 views
1
/*
2
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
/**
27
* Defines the Java API for XML Processing (JAXP), the Streaming API for XML (StAX),
28
* the Simple API for XML (SAX), and the W3C Document Object Model (DOM) API.
29
*
30
* <h2 id="LookupMechanism">JAXP Lookup Mechanism</h2>
31
* JAXP defines an ordered lookup procedure to determine the implementation class
32
* to load for the JAXP factories. Factories that support the mechanism are listed
33
* in the table below along with the method, System Property name, Configuration
34
* File, and System Default method to be used in the procedure.
35
*
36
* <table class="plain" id="Factories">
37
* <caption>JAXP Factories</caption>
38
* <thead>
39
* <tr>
40
* <th scope="col">Factory</th>
41
* <th scope="col">Method</th>
42
* <th scope="col">System Property Name</th>
43
* <th scope="col">Configuration File</th>
44
* <th scope="col">System Default</th>
45
* </tr>
46
* </thead>
47
*
48
* <tbody>
49
* <tr>
50
* <th scope="row" style="font-weight:normal" id="DATA">
51
* {@link javax.xml.datatype.DatatypeFactory DatatypeFactory}
52
* </th>
53
* <td style="text-align:center">{@link javax.xml.datatype.DatatypeFactory#newInstance() newInstance()}</td>
54
* <td style="text-align:center">{@code javax.xml.datatype.DatatypeFactory}</td>
55
* <td style="text-align:center"><a href="#JaxpProperties">jaxp.properties</a></td>
56
* <td style="text-align:center">{@link javax.xml.datatype.DatatypeFactory#newDefaultInstance() newDefaultInstance()}</td>
57
* </tr>
58
* <tr>
59
* <th scope="row" style="font-weight:normal" id="DOM">
60
* {@link javax.xml.parsers.DocumentBuilderFactory DocumentBuilderFactory}
61
* </th>
62
* <td style="text-align:center">{@link javax.xml.parsers.DocumentBuilderFactory#newInstance() newInstance()}</td>
63
* <td style="text-align:center">{@code javax.xml.parsers.DocumentBuilderFactory}</td>
64
* <td style="text-align:center"><a href="#JaxpProperties">jaxp.properties</a></td>
65
* <td style="text-align:center">{@link javax.xml.parsers.DocumentBuilderFactory#newDefaultInstance() newDefaultInstance()}</td>
66
* </tr>
67
* <tr>
68
* <th scope="row" style="font-weight:normal" id="SAX">
69
* {@link javax.xml.parsers.SAXParserFactory SAXParserFactory}
70
* </th>
71
* <td style="text-align:center">{@link javax.xml.parsers.SAXParserFactory#newInstance() newInstance()}</td>
72
* <td style="text-align:center">{@code javax.xml.parsers.SAXParserFactory}</td>
73
* <td style="text-align:center"><a href="#JaxpProperties">jaxp.properties</a></td>
74
* <td style="text-align:center">{@link javax.xml.parsers.SAXParserFactory#newDefaultInstance() newDefaultInstance()}</td>
75
* </tr>
76
* <tr>
77
* <th scope="row" style="font-weight:normal" id="StAXEvent">
78
* {@link javax.xml.stream.XMLEventFactory XMLEventFactory}
79
* </th>
80
* <td style="text-align:center">{@link javax.xml.stream.XMLEventFactory#newFactory() newFactory()}</td>
81
* <td style="text-align:center">{@code javax.xml.stream.XMLEventFactory}</td>
82
* <td style="text-align:center">
83
* <a href="#StAXProperties">stax.properties</a> and then
84
* <a href="#JaxpProperties">jaxp.properties</a>
85
* </td>
86
* <td style="text-align:center">{@link javax.xml.stream.XMLEventFactory#newDefaultFactory() newDefaultFactory()}</td>
87
* </tr>
88
* <tr>
89
* <th scope="row" style="font-weight:normal" id="StAXInput">
90
* {@link javax.xml.stream.XMLInputFactory XMLInputFactory}
91
* </th>
92
* <td style="text-align:center">{@link javax.xml.stream.XMLInputFactory#newFactory() newFactory()}</td>
93
* <td style="text-align:center">{@code javax.xml.stream.XMLInputFactory}</td>
94
* <td style="text-align:center">
95
* <a href="#StAXProperties">stax.properties</a> and then
96
* <a href="#JaxpProperties">jaxp.properties</a>
97
* </td>
98
* <td style="text-align:center">{@link javax.xml.stream.XMLInputFactory#newDefaultFactory() newDefaultFactory()}</td>
99
* </tr>
100
* <tr>
101
* <th scope="row" style="font-weight:normal" id="StAXOutput">
102
* {@link javax.xml.stream.XMLOutputFactory XMLOutputFactory}
103
* </th>
104
* <td style="text-align:center">{@link javax.xml.stream.XMLOutputFactory#newFactory() newFactory()}</td>
105
* <td style="text-align:center">{@code javax.xml.stream.XMLOutputFactory}</td>
106
* <td style="text-align:center">
107
* <a href="#StAXProperties">stax.properties</a> and then
108
* <a href="#JaxpProperties">jaxp.properties</a>
109
* </td>
110
* <td style="text-align:center">{@link javax.xml.stream.XMLOutputFactory#newDefaultFactory() newDefaultFactory()}</td>
111
* </tr>
112
* <tr>
113
* <th scope="row" style="font-weight:normal" id="XSLT">
114
* {@link javax.xml.transform.TransformerFactory TransformerFactory}
115
* </th>
116
* <td style="text-align:center">{@link javax.xml.transform.TransformerFactory#newInstance() newInstance()}</td>
117
* <td style="text-align:center">{@code javax.xml.transform.TransformerFactory}</td>
118
* <td style="text-align:center"><a href="#JaxpProperties">jaxp.properties</a></td>
119
* <td style="text-align:center">{@link javax.xml.transform.TransformerFactory#newDefaultInstance() newDefaultInstance()}</td>
120
* </tr>
121
* <tr>
122
* <th scope="row" style="font-weight:normal" id="Validation">
123
* {@link javax.xml.validation.SchemaFactory SchemaFactory}
124
* </th>
125
* <td style="text-align:center">{@link javax.xml.validation.SchemaFactory#newInstance(java.lang.String) newInstance(schemaLanguage)}</td>
126
* <td style="text-align:center">{@code javax.xml.validation.SchemaFactory:}<i>schemaLanguage</i>[1]</td>
127
* <td style="text-align:center"><a href="#JaxpProperties">jaxp.properties</a></td>
128
* <td style="text-align:center">{@link javax.xml.validation.SchemaFactory#newDefaultInstance() newDefaultInstance()}</td>
129
* </tr>
130
* <tr>
131
* <th scope="row" style="font-weight:normal" id="XPath">
132
* {@link javax.xml.xpath.XPathFactory XPathFactory}
133
* </th>
134
* <td style="text-align:center">{@link javax.xml.xpath.XPathFactory#newInstance(java.lang.String) newInstance(uri)}</td>
135
* <td style="text-align:center">{@link javax.xml.xpath.XPathFactory#DEFAULT_PROPERTY_NAME DEFAULT_PROPERTY_NAME} + ":uri"[2]</td>
136
* <td style="text-align:center"><a href="#JaxpProperties">jaxp.properties</a></td>
137
* <td style="text-align:center">{@link javax.xml.xpath.XPathFactory#newDefaultInstance() newDefaultInstance()}</td>
138
* </tr>
139
* </tbody>
140
* </table>
141
*
142
* <b>[1]</b> where <i>schemaLanguage</i> is the parameter to the
143
* {@link javax.xml.validation.SchemaFactory#newInstance(java.lang.String) newInstance(schemaLanguage)}
144
* method.
145
* <p>
146
* <b>[2]</b> where <i>uri</i> is the parameter to the
147
* {@link javax.xml.xpath.XPathFactory#newInstance(java.lang.String) newInstance(uri)}
148
* method.
149
*
150
* <h3 id="JaxpProperties">jaxp.properties</h3>
151
* {@code jaxp.properties} is a configuration file in standard
152
* {@link java.util.Properties} format and typically located in the {@code conf}
153
* directory of the Java installation. It contains the fully qualified
154
* name of the implementation class with the key being the system property name
155
* defined in <a href="#Factories">the table</a> above.
156
* <p>
157
* The {@code jaxp.properties} file is read only once by the implementation and
158
* the values are then cached for future use. If the file does not exist when
159
* the first attempt is made to read from it, no further attempts
160
* are made to check for its existence. It is not possible to change the value
161
* of any property after it has been read for the first time.
162
*
163
* <h3 id="StAXProperties">stax.properties</h3>
164
* {@code stax.properties} is a configuration file that functions the same as
165
* {@code jaxp.properties} except that it is only used by StAX factory lookup.
166
*
167
* <h3 id="LookupProcedure">Lookup Procedure</h3>
168
* The <a href="#Factories">JAXP Factories</a> follow the procedure described
169
* below in order to locate and load the implementation class:
170
*
171
* <ul>
172
* <li>
173
* Use the system property as described in column System Property of the table
174
* <a href="#Factories">JAXP Factories</a> above.
175
* </li>
176
* <li>
177
* <p>
178
* Use the configuration file <a href="#JaxpProperties">jaxp.properties</a> as
179
* indicated in the table <a href="#Factories">JAXP Factories</a>. For StAX,
180
* if <a href="#StAXProperties">stax.properties</a> exists, the factories will
181
* first attempt to read from it instead of <a href="#JaxpProperties">jaxp.properties</a>.
182
* </li>
183
* <li>
184
* <p>
185
* Use the service-provider loading facility, defined by the
186
* {@link java.util.ServiceLoader} class, to attempt to locate and load an
187
* implementation of the service using the {@linkplain
188
* java.util.ServiceLoader#load(java.lang.Class) default loading mechanism}:
189
* the service-provider loading facility will use the {@linkplain
190
* java.lang.Thread#getContextClassLoader() current thread's context class loader}
191
* to attempt to load the service. If the context class
192
* loader is null, the {@linkplain
193
* ClassLoader#getSystemClassLoader() system class loader} will be used.
194
*
195
* <h3>{@link javax.xml.validation.SchemaFactory SchemaFactory}</h3>
196
* In case of the {@link javax.xml.validation.SchemaFactory SchemaFactory},
197
* each potential service provider is required to implement the method
198
* {@link javax.xml.validation.SchemaFactory#isSchemaLanguageSupported(java.lang.String)
199
* isSchemaLanguageSupported(String schemaLanguage)}.
200
* The first service provider found that supports the specified schema language
201
* is returned.
202
*
203
* <h3>{@link javax.xml.xpath.XPathFactory XPathFactory}</h3>
204
* In case of the {@link javax.xml.xpath.XPathFactory XPathFactory},
205
* each potential service provider is required to implement the method
206
* {@link javax.xml.xpath.XPathFactory#isObjectModelSupported(String objectModel)
207
* isObjectModelSupported(String objectModel)}.
208
* The first service provider found that supports the specified object model is
209
* returned.
210
* </li>
211
* <li>
212
* <p>
213
* Otherwise, the {@code system-default} implementation is returned, which is
214
* equivalent to calling the {@code newDefaultInstance() or newDefaultFactory()}
215
* method as shown in column System Default of the table
216
* <a href="#Factories">JAXP Factories</a> above.
217
*
218
* <h3>{@link javax.xml.validation.SchemaFactory SchemaFactory}</h3>
219
* In case of the {@link javax.xml.validation.SchemaFactory SchemaFactory},
220
* there must be a {@linkplain javax.xml.validation.SchemaFactory#newDefaultInstance()
221
* platform default} {@code SchemaFactory} for W3C XML Schema.
222
*
223
* <h3>{@link javax.xml.xpath.XPathFactory XPathFactory}</h3>
224
* In case of the {@link javax.xml.xpath.XPathFactory XPathFactory},
225
* there must be a
226
* {@linkplain javax.xml.xpath.XPathFactory#newDefaultInstance() platform default}
227
* {@code XPathFactory} for the W3C DOM, i.e.
228
* {@link javax.xml.xpath.XPathFactory#DEFAULT_OBJECT_MODEL_URI DEFAULT_OBJECT_MODEL_URI}.
229
* </li>
230
* </ul>
231
*
232
* @implNote
233
* <h2>Implementation Specific Features and Properties</h2>
234
*
235
* In addition to the standard features and properties described within the public
236
* APIs of this module, the JDK implementation supports a further number of
237
* implementation specific features and properties. This section describes the
238
* naming convention, System Properties, jaxp.properties, scope and order,
239
* and processors to which a property applies. A table listing the implementation
240
* specific features and properties which the implementation currently supports
241
* can be found at the end of this note.
242
*
243
* <h3 id="NamingConvention">Naming Convention</h3>
244
* The names of the features and properties are fully qualified, composed of a
245
* prefix and name.
246
*
247
* <h4>Prefix</h4>
248
* The prefix for JDK features and properties, as well as their corresponding
249
* System Properties if any, is defined as:
250
* <pre>
251
* {@code jdk.xml.}
252
* </pre>
253
*
254
* <h4>Name</h4>
255
* A name may consist of one or multiple words that are case-sensitive.
256
* All letters of the first word are in lowercase, while the first letter of
257
* each subsequent word is capitalized.
258
* <p>
259
* An example of a property that indicates whether an XML document is standalone
260
* would thus have a format:
261
* <pre>
262
* {@code jdk.xml.isStandalone}
263
* </pre>
264
* and a corresponding System Property:
265
* <pre>
266
* {@systemProperty jdk.xml.isStandalone}
267
* </pre>
268
*
269
* <h3>System Properties</h3>
270
* A property may have a corresponding System Property with the same name.
271
* A System Property should be set prior to the creation of a processor and
272
* may be cleared afterwards.
273
*
274
* <h3>jaxp.properties</h3>
275
* A system property can be specified in the <a href="#JaxpProperties">jaxp.properties</a>
276
* file to set the behavior for all invocations of the JDK. The format is
277
* {@code system-property-name=value}. For example:
278
* <pre>
279
* {@code jdk.xml.isStandalone=true}
280
* </pre>
281
*
282
* <h3 id="ScopeAndOrder">Scope and Order</h3>
283
* The {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING} feature
284
* (hereafter referred to as secure processing) is required for XML processors
285
* including DOM, SAX, Schema Validation, XSLT, and XPath. When secure processing
286
* is set to true, security related features and properties, such as those flagged
287
* as {@code "security: yes"} (hereafter referred to as security properties) in
288
* table <a href="#Features">Implementation Specific Features</a> and
289
* <a href="#Properties">Properties</a>,
290
* are enforced. Such enforcement includes setting security properties and features
291
* to more restrictive values and limits as shown in {@code "Value"}'s
292
* subcolumn {@code "Enforced"} in the tables. When secure processing
293
* is set to false, however, the property values will not be affected.
294
* <p>
295
* When the Java Security Manager is present, secure processing is set to true
296
* and can not be turned off. The security properties are therefore enforced.
297
* <p>
298
* Properties specified in the jaxp.properties file affect all invocations of
299
* the JDK, and will override their default values, or those that may have been
300
* set by secure processing.
301
* <p>
302
* System properties, when set, affect the invocation of the JDK and override
303
* the default settings or those that may have been set in jaxp.properties or
304
* by secure processing.
305
* <p>
306
* JAXP properties specified through JAXP factories or processors (e.g. SAXParser)
307
* take preference over system properties, the jaxp.properties file, as well as
308
* secure processing.
309
*
310
* <h3 id="Processor">Processor Support</h3>
311
* Features and properties may be supported by one or more processors. The
312
* following table lists the processors by IDs that can be used for reference.
313
*
314
* <table class="plain" id="Processors">
315
* <caption>Processors</caption>
316
* <thead>
317
* <tr>
318
* <th scope="col">ID</th>
319
* <th scope="col">Name</th>
320
* <th scope="col">How to set the property</th>
321
* <th scope="col">How to set the feature</th>
322
* </tr>
323
* </thead>
324
*
325
* <tbody>
326
* <tr>
327
* <th scope="row" style="font-weight:normal" id="DOM">DOM</th>
328
* <td style="text-align:center">DOM Parser</td>
329
* <td>
330
* {@code DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();}<br>
331
* {@code dbf.setAttribute(name, value);}
332
* </td>
333
* <td>
334
* {@code DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();}<br>
335
* {@code dbf.setFeature(name, value);}
336
* </td>
337
* </tr>
338
* <tr>
339
* <th scope="row" style="font-weight:normal" id="SAX">SAX</th>
340
* <td style="text-align:center">SAX Parser</td>
341
* <td>
342
* {@code SAXParserFactory spf = SAXParserFactory.newInstance();}<br>
343
* {@code SAXParser parser = spf.newSAXParser();}<br>
344
* {@code parser.setProperty(name, value);}
345
* </td>
346
* <td>
347
* {@code SAXParserFactory spf = SAXParserFactory.newInstance();}<br>
348
* {@code spf.setFeature(name, value);}<br>
349
* </td>
350
* </tr>
351
* <tr>
352
* <th scope="row" style="font-weight:normal" id="StAX">StAX</th>
353
* <td style="text-align:center">StAX Parser</td>
354
* <td>
355
* {@code XMLInputFactory xif = XMLInputFactory.newInstance();}<br>
356
* {@code xif.setProperty(name, value);}
357
* </td>
358
* <td>
359
* {@code XMLInputFactory xif = XMLInputFactory.newInstance();}<br>
360
* {@code xif.setProperty(name, value);}
361
* </td>
362
* </tr>
363
* <tr>
364
* <th scope="row" style="font-weight:normal" id="Validation">Validation</th>
365
* <td style="text-align:center">XML Validation API</td>
366
* <td>
367
* {@code SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);}<br>
368
* {@code schemaFactory.setProperty(name, value);}
369
* </td>
370
* <td>
371
* {@code SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);}<br>
372
* {@code schemaFactory.setFeature(name, value);}
373
* </td>
374
* </tr>
375
* <tr>
376
* <th scope="row" style="font-weight:normal" id="Transform">Transform</th>
377
* <td style="text-align:center">XML Transform API</td>
378
* <td>
379
* {@code TransformerFactory factory = TransformerFactory.newInstance();}<br>
380
* {@code factory.setAttribute(name, value);}
381
* </td>
382
* <td>
383
* {@code TransformerFactory factory = TransformerFactory.newInstance();}<br>
384
* {@code factory.setFeature(name, value);}
385
* </td>
386
* </tr>
387
* <tr>
388
* <th scope="row" style="font-weight:normal" id="XSLTCSerializer">XSLTC Serializer</th>
389
* <td style="text-align:center">XSLTC Serializer</td>
390
* <td>
391
* {@code Transformer transformer = TransformerFactory.newInstance().newTransformer();}<br>
392
* {@code transformer.setOutputProperty(name, value);}
393
* </td>
394
* <td>
395
* </td>
396
* </tr>
397
* <tr>
398
* <th scope="row" style="font-weight:normal" id="DOMLS">DOMLS</th>
399
* <td style="text-align:center">DOM Load and Save</td>
400
* <td>
401
* {@code LSSerializer serializer = domImplementation.createLSSerializer();} <br>
402
* {@code serializer.getDomConfig().setParameter(name, value);}
403
* </td>
404
* <td>
405
* </td>
406
* </tr>
407
* <tr>
408
* <th scope="row" style="font-weight:normal" id="XPATH">XPath</th>
409
* <td style="text-align:center">XPath</td>
410
* <td>N/A
411
* </td>
412
* <td>
413
* {@code XPathFactory factory = XPathFactory.newInstance();} <br>
414
* {@code factory.setFeature(name, value);}
415
* </td>
416
* </tr>
417
* </tbody>
418
* </table>
419
*
420
* <h3>Implementation Specific Features and Properties</h3>
421
* The Implementation Specific Features and Properties reflect JDK's choice to
422
* manage the limitations on resources while complying with the API specification,
423
* or allow applications to alter behaviors beyond those required by the standards.
424
* <p>
425
* The table below lists the Implementation Specific Properties currently supported
426
* by the JDK. More properties may be added in the future if necessary.
427
*
428
* <table class="striped" id="Properties">
429
* <caption>Implementation Specific Properties</caption>
430
* <thead>
431
* <tr>
432
* <th scope="col" rowspan="2">Full Name (<a href="#NamingConvention">prefix + name</a>)
433
* <a href="#Note1">[1]</a></th>
434
* <th scope="col" rowspan="2">Description</th>
435
* <th scope="col" rowspan="2">API Property <a href="#Note2">[2]</a></th>
436
* <th scope="col" rowspan="2">System Property <a href="#Note3">[3]</a></th>
437
* <th scope="col" rowspan="2">jaxp.properties <a href="#Note3">[3]</a></th>
438
* <th scope="col" colspan="4" style="text-align:center">Value <a href="#Note4">[4]</a></th>
439
* <th scope="col" rowspan="2">Security <a href="#Note5">[5]</a></th>
440
* <th scope="col" rowspan="2">Supported Processor <a href="#Note6">[6]</a></th>
441
* <th scope="col" rowspan="2">Since <a href="#Note7">[7]</a></th>
442
* </tr>
443
* <tr>
444
* <th scope="col">Type</th>
445
* <th scope="col">Value</th>
446
* <th scope="col">Default</th>
447
* <th scope="col">Enforced</th>
448
* </tr>
449
* </thead>
450
*
451
* <tbody>
452
*
453
* <tr>
454
* <td id="EELimit">{@systemProperty jdk.xml.entityExpansionLimit}</td>
455
* <td>Limits the number of entity expansions.
456
* </td>
457
* <td style="text-align:center" rowspan="9">yes</td>
458
* <td style="text-align:center" rowspan="9">yes</td>
459
* <td style="text-align:center" rowspan="9">yes</td>
460
* <td style="text-align:center" rowspan="9">Integer</td>
461
* <td rowspan="9">
462
* A positive integer. A value less than or equal to 0 indicates no limit.
463
* If the value is not an integer, a NumberFormatException is thrown.
464
* </td>
465
* <td style="text-align:center">64000</td>
466
* <td style="text-align:center">64000</td>
467
* <td style="text-align:center" rowspan="9">Yes</td>
468
* <td style="text-align:center" rowspan="9">
469
* <a href="#DOM">DOM</a><br>
470
* <a href="#SAX">SAX</a><br>
471
* <a href="#StAX">StAX</a><br>
472
* <a href="#Validation">Validation</a><br>
473
* <a href="#Transform">Transform</a>
474
* </td>
475
* <td style="text-align:center" rowspan="9">8</td>
476
* </tr>
477
* <tr>
478
* <td id="EALimit">{@systemProperty jdk.xml.elementAttributeLimit}</td>
479
* <td>Limits the number of attributes an element can have.
480
* </td>
481
* <td style="text-align:center">10000</td>
482
* <td style="text-align:center">10000</td>
483
* </tr>
484
* <tr>
485
* <td id="OccurLimit">{@systemProperty jdk.xml.maxOccurLimit}</td>
486
* <td>Limits the number of content model nodes that may be created when building
487
* a grammar for a W3C XML Schema that contains maxOccurs attributes with values
488
* other than "unbounded".
489
* </td>
490
* <td style="text-align:center">5000</td>
491
* <td style="text-align:center">5000</td>
492
* </tr>
493
* <tr>
494
* <td id="SizeLimit">{@systemProperty jdk.xml.totalEntitySizeLimit}</td>
495
* <td>Limits the total size of all entities that include general and parameter
496
* entities. The size is calculated as an aggregation of all entities.
497
* </td>
498
* <td style="text-align:center">5x10^7</td>
499
* <td style="text-align:center">5x10^7</td>
500
* </tr>
501
* <tr>
502
* <td id="GELimit">{@systemProperty jdk.xml.maxGeneralEntitySizeLimit}</td>
503
* <td>Limits the maximum size of any general entities.
504
* </td>
505
* <td style="text-align:center">0</td>
506
* <td style="text-align:center">0</td>
507
* </tr>
508
* <tr>
509
* <td id="PELimit">{@systemProperty jdk.xml.maxParameterEntitySizeLimit}</td>
510
* <td>Limits the maximum size of any parameter entities, including the result
511
* of nesting multiple parameter entities.
512
* </td>
513
* <td style="text-align:center">10^6</td>
514
* <td style="text-align:center">10^6</td>
515
* </tr>
516
* <tr>
517
* <td id="ERLimit">{@systemProperty jdk.xml.entityReplacementLimit}</td>
518
* <td>Limits the total number of nodes in all entity references.
519
* </td>
520
* <td style="text-align:center">3x10^6</td>
521
* <td style="text-align:center">3x10^6</td>
522
* </tr>
523
* <tr>
524
* <td id="ElementDepth">{@systemProperty jdk.xml.maxElementDepth}</td>
525
* <td>Limits the maximum element depth.
526
* </td>
527
* <td style="text-align:center">0</td>
528
* <td style="text-align:center">0</td>
529
* </tr>
530
* <tr>
531
* <td id="NameLimit">{@systemProperty jdk.xml.maxXMLNameLimit}</td>
532
* <td>Limits the maximum size of XML names, including element name, attribute
533
* name and namespace prefix and URI.
534
* </td>
535
* <td style="text-align:center">1000</td>
536
* <td style="text-align:center">1000</td>
537
* </tr>
538
*
539
* <tr>
540
* <td id="ISSTANDALONE">{@systemProperty jdk.xml.isStandalone}</td>
541
* <td>Indicates that the serializer should treat the output as a
542
* standalone document. The property can be used to ensure a newline is written
543
* after the XML declaration. Unlike the property
544
* {@link org.w3c.dom.ls.LSSerializer#getDomConfig() xml-declaration}, this property
545
* does not have an effect on whether an XML declaration should be written out.
546
* </td>
547
* <td style="text-align:center">yes</td>
548
* <td style="text-align:center">yes</td>
549
* <td style="text-align:center">yes</td>
550
* <td style="text-align:center">boolean</td>
551
* <td style="text-align:center">true/false</td>
552
* <td style="text-align:center">false</td>
553
* <td style="text-align:center">N/A</td>
554
* <td style="text-align:center">No</td>
555
* <td style="text-align:center"><a href="#DOMLS">DOMLS</a></td>
556
* <td style="text-align:center">17</td>
557
* </tr>
558
* <tr>
559
* <td id="XSLTCISSTANDALONE">{@systemProperty jdk.xml.xsltcIsStandalone}</td>
560
* <td>Indicates that the <a href="#XSLTCSerializer">XSLTC serializer</a> should
561
* treat the output as a standalone document. The property can be used to ensure
562
* a newline is written after the XML declaration. Unlike the property
563
* {@link javax.xml.transform.OutputKeys#OMIT_XML_DECLARATION OMIT_XML_DECLARATION},
564
* this property does not have an effect on whether an XML declaration should be
565
* written out.
566
* <p>
567
* This property behaves similar to that for <a href="#DOMLS">DOMLS</a> above,
568
* except that it is for the <a href="#XSLTCSerializer">XSLTC Serializer</a>
569
* and its value is a String.
570
* </td>
571
* <td style="text-align:center">yes</td>
572
* <td style="text-align:center">yes</td>
573
* <td style="text-align:center">yes</td>
574
* <td style="text-align:center">String</td>
575
* <td style="text-align:center">yes/no</td>
576
* <td style="text-align:center">no</td>
577
* <td style="text-align:center">N/A</td>
578
* <td style="text-align:center">No</td>
579
* <td style="text-align:center"><a href="#XSLTCSerializer">XSLTC Serializer</a></td>
580
* <td style="text-align:center">17</td>
581
* </tr>
582
* <tr>
583
* <td id="cdataChunkSize">{@systemProperty jdk.xml.cdataChunkSize}</td>
584
* <td>Instructs the parser to return the data in a CData section in a single chunk
585
* when the property is zero or unspecified, or in multiple chunks when it is greater
586
* than zero. The parser shall split the data by linebreaks, and any chunks that are
587
* larger than the specified size to ones that are equal to or smaller than the size.
588
* </td>
589
* <td style="text-align:center">yes</td>
590
* <td style="text-align:center">yes</td>
591
* <td style="text-align:center">yes</td>
592
* <td style="text-align:center">Integer</td>
593
* <td>A positive integer. A value less than
594
* or equal to 0 indicates that the property is not specified. If the value is not
595
* an integer, a NumberFormatException is thrown.</td>
596
* <td style="text-align:center">0</td>
597
* <td style="text-align:center">N/A</td>
598
* <td style="text-align:center">No</td>
599
* <td style="text-align:center"><a href="#SAX">SAX</a><br><a href="#StAX">StAX</a></td>
600
* <td style="text-align:center">9</td>
601
* </tr>
602
* <tr>
603
* <td id="extensionClassLoader">jdk.xml.extensionClassLoader</td>
604
* <td>Sets a non-null ClassLoader instance to be used for loading XSLTC java
605
* extension functions.
606
* </td>
607
* <td style="text-align:center">yes</td>
608
* <td style="text-align:center">no</td>
609
* <td style="text-align:center">no</td>
610
* <td style="text-align:center">Object</td>
611
* <td>A reference to a ClassLoader object. Null if the value is not specified.</td>
612
* <td style="text-align:center">null</td>
613
* <td style="text-align:center">N/A</td>
614
* <td style="text-align:center">No</td>
615
* <td style="text-align:center"><a href="#Transform">Transform</a></td>
616
* <td style="text-align:center">9</td>
617
* </tr>
618
* <tr>
619
* <td id="extensionClassLoader">jdk.xml.xpathExprGrpLimit</td>
620
* <td>Limits the number of groups an XPath expression can contain.
621
* </td>
622
* <td style="text-align:center" rowspan="2">
623
* <a href="#Transform">Transform</a>:yes<br>
624
* <a href="#XPATH">XPath</a>:no
625
* </td>
626
* <td style="text-align:center" rowspan="3">yes</td>
627
* <td style="text-align:center" rowspan="3">yes</td>
628
* <td style="text-align:center" rowspan="3">Integer</td>
629
* <td rowspan="3">A positive integer. A value less than or equal to 0 indicates no limit.
630
* If the value is not an integer, a NumberFormatException is thrown. </td>
631
* <td style="text-align:center">10</td>
632
* <td style="text-align:center">10</td>
633
* <td style="text-align:center" rowspan="3">Yes</td>
634
* <td style="text-align:center" rowspan="2">
635
* <a href="#Transform">Transform</a><br>
636
* <a href="#XPath">XPath</a>
637
* </td>
638
* <td style="text-align:center" rowspan="3">19</td>
639
* </tr>
640
* <tr>
641
* <td id="extensionClassLoader">jdk.xml.xpathExprOpLimit</td>
642
* <td>Limits the number of operators an XPath expression can contain.
643
* </td>
644
* <td style="text-align:center">100</td>
645
* <td style="text-align:center">100</td>
646
* </tr>
647
* <tr>
648
* <td id="extensionClassLoader">jdk.xml.xpathTotalOpLimit</td>
649
* <td>Limits the total number of XPath operators in an XSL Stylesheet.
650
* </td>
651
* <td style="text-align:center">yes</td>
652
* <td style="text-align:center">10000</td>
653
* <td style="text-align:center">10000</td>
654
* <td style="text-align:center">
655
* <a href="#Transform">Transform</a><br>
656
* </td>
657
* </tr>
658
* </tbody>
659
* </table>
660
* <p>
661
* The table below lists the Implementation Specific Features currently supported
662
* by the JDK. More features may be added in the future if necessary.
663
*
664
* <table class="striped" id="Features">
665
* <caption>Implementation Specific Features</caption>
666
* <thead>
667
* <tr>
668
* <th scope="col" rowspan="2">Full Name (<a href="#NamingConvention">prefix + name</a>)
669
* <a href="#Note1">[1]</a></th>
670
* <th scope="col" rowspan="2">Description</th>
671
* <th scope="col" rowspan="2">API Property <a href="#Note2">[2]</a></th>
672
* <th scope="col" rowspan="2">System Property <a href="#Note3">[3]</a></th>
673
* <th scope="col" rowspan="2">jaxp.properties <a href="#Note3">[3]</a></th>
674
* <th scope="col" colspan="4" style="text-align:center">Value <a href="#Note4">[4]</a></th>
675
* <th scope="col" rowspan="2">Security <a href="#Note5">[5]</a></th>
676
* <th scope="col" rowspan="2">Supported Processor <a href="#Note6">[6]</a></th>
677
* <th scope="col" rowspan="2">Since <a href="#Note7">[7]</a></th>
678
* </tr>
679
* <tr>
680
* <th scope="col">Type</th>
681
* <th scope="col">Value</th>
682
* <th scope="col">Default</th>
683
* <th scope="col">Enforced</th>
684
* </tr>
685
* </thead>
686
* <tbody>
687
* <tr>
688
* <td id="ExtFunc">{@systemProperty jdk.xml.enableExtensionFunctions}</td>
689
* <td>Determines if XSLT and XPath extension functions are to be allowed.
690
* </td>
691
* <td style="text-align:center" rowspan="3">yes</td>
692
* <td style="text-align:center" rowspan="3">yes</td>
693
* <td style="text-align:center" rowspan="3">yes</td>
694
* <td style="text-align:center" rowspan="3">Boolean</td>
695
* <td>
696
* true or false. True indicates that extension functions are allowed; False otherwise.
697
* </td>
698
* <td style="text-align:center">true</td>
699
* <td style="text-align:center">false</td>
700
* <td style="text-align:center">Yes</td>
701
* <td style="text-align:center">
702
* <a href="#Transform">Transform</a><br>
703
* <a href="#XPAth">XPath</a>
704
* </td>
705
* <td style="text-align:center">8</td>
706
* </tr>
707
* <tr>
708
* <td id="ORParser">{@systemProperty jdk.xml.overrideDefaultParser}</td>
709
* <td>Enables the use of a 3rd party's parser implementation to override the
710
* system-default parser for the JDK's Transform, Validation and XPath implementations.
711
* </td>
712
* <td>
713
* true or false. True enables the use of 3rd party's parser implementations
714
* to override the system-default implementation during XML Transform, Validation
715
* or XPath operation. False disables the use of 3rd party's parser
716
* implementations.
717
* </td>
718
* <td style="text-align:center">false</td>
719
* <td style="text-align:center">false</td>
720
* <td style="text-align:center">Yes</td>
721
* <td style="text-align:center">
722
* <a href="#Transform">Transform</a><br>
723
* <a href="#Validation">Validation</a><br>
724
* <a href="#XPAth">XPath</a>
725
* </td>
726
* <td style="text-align:center">9</td>
727
* </tr>
728
* <tr>
729
* <td id="symbolTable">{@systemProperty jdk.xml.resetSymbolTable}</td>
730
* <td>Instructs the parser to reset its internal symbol table during each parse operation.
731
* </td>
732
* <td>
733
* true or false. True indicates that the SymbolTable associated with a parser needs to be
734
* reallocated during each parse operation.<br>
735
* False indicates that the parser's SymbolTable instance shall be reused
736
* during subsequent parse operations.
737
* </td>
738
* <td style="text-align:center">false</td>
739
* <td style="text-align:center">N/A</td>
740
* <td style="text-align:center">No</td>
741
* <td style="text-align:center">
742
* <a href="#SAX">SAX</a>
743
* </td>
744
* <td style="text-align:center">9</td>
745
* </tr>
746
* </tbody>
747
* </table>
748
* <p id="Note1">
749
* <b>[1]</b> The full name of a property should be used to set the property.
750
* <p id="Note2">
751
* <b>[2]</b> A value "yes" indicates that the property can be set through the
752
* processor or its factory, "no" otherwise.
753
* <p id="Note3">
754
* <b>[3]</b> A value "yes" indicates there is a corresponding System Property
755
* for the property, "no" otherwise.
756
*
757
* <p id="Note4">
758
* <b>[4]</b> The value must be exactly as listed in this table, case-sensitive.
759
* The value of the corresponding System Property is the String representation of
760
* the property value. If the type is boolean, the system property is true only
761
* if it is "true"; If the type is String, the system property is true only if
762
* it is exactly the same string representing the positive value (e.g. "yes" for
763
* {@code xsltcIsStandalone}); The system property is false otherwise. If the type
764
* is Integer, the value of the System Property is the String representation of
765
* the value (e.g. "64000" for {@code entityExpansionLimit}).
766
*
767
* <p id="Note5">
768
* <b>[5]</b> A value "yes" indicates the property is a Security Property. Refer
769
* to the <a href="#ScopeAndOrder">Scope and Order</a> on how secure processing
770
* may affect the value of a Security Property.
771
* <p id="Note6">
772
* <b>[6]</b> One or more processors that support the property. The values of the
773
* field are IDs described in table <a href="#Processor">Processors</a>.
774
* <p id="Note7">
775
* <b>[7]</b> Indicates the initial release the property is introduced.
776
*
777
* <h3>Legacy Property Names (deprecated)</h3>
778
* JDK releases prior to JDK 17 support the use of URI style prefix for properties.
779
* These legacy property names are <b>deprecated</b> as of JDK 17 and may be removed
780
* in future releases. If both new and legacy properties are set, the new property
781
* names take precedence regardless of how and where they are set. The overriding order
782
* as defined in <a href="#ScopeAndOrder">Scope and Order</a> thus becomes, in
783
* descending order:
784
*
785
* <ul>
786
* <li>The default value;</li>
787
* <li>Value set by FEATURE_SECURE_PROCESSING;</li>
788
* <li>Value set in jaxp.properties;</li>
789
* <li>Value set as System Property;</li>
790
* <li>Value set on factories or processors using <b>legacy property names</b>;</li>
791
* <li>Value set on factories or processors using new property names.</li>
792
* </ul>
793
* <p>
794
* The following table lists the properties and their corresponding legacy names.
795
*
796
* <table class="striped" id="LegacyProperties">
797
* <caption>Legacy Property Names (deprecated since 17)</caption>
798
* <thead>
799
* <tr>
800
* <th>Property</th>
801
* <th>Legacy Property Name(s)</th>
802
* </tr>
803
* </thead>
804
* <tbody>
805
* <tr>
806
* <td>{@systemProperty jdk.xml.entityExpansionLimit}</td>
807
* <td>{@code http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit}</td>
808
* </tr>
809
* <tr>
810
* <td>{@systemProperty jdk.xml.elementAttributeLimit}</td>
811
* <td>{@code http://www.oracle.com/xml/jaxp/properties/elementAttributeLimit}</td>
812
* </tr>
813
* <tr>
814
* <td>{@systemProperty jdk.xml.maxOccurLimit}</td>
815
* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxOccurLimit}</td>
816
* </tr>
817
* <tr>
818
* <td>{@systemProperty jdk.xml.totalEntitySizeLimit}</td>
819
* <td>{@code http://www.oracle.com/xml/jaxp/properties/totalEntitySizeLimit}</td>
820
* </tr>
821
* <tr>
822
* <td>{@systemProperty jdk.xml.maxGeneralEntitySizeLimit}</td>
823
* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxGeneralEntitySizeLimit}</td>
824
* </tr>
825
* <tr>
826
* <td>{@systemProperty jdk.xml.maxParameterEntitySizeLimit}</td>
827
* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxParameterEntitySizeLimit}</td>
828
* </tr>
829
* <tr>
830
* <td>{@systemProperty jdk.xml.entityReplacementLimit}</td>
831
* <td>{@code http://www.oracle.com/xml/jaxp/properties/entityReplacementLimit}</td>
832
* </tr>
833
* <tr>
834
* <td>{@systemProperty jdk.xml.maxElementDepth}</td>
835
* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxElementDepth}</td>
836
* </tr>
837
* <tr>
838
* <td>{@systemProperty jdk.xml.maxXMLNameLimit}</td>
839
* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxXMLNameLimit}</td>
840
* </tr>
841
* <tr>
842
* <td>{@systemProperty jdk.xml.isStandalone}</td>
843
* <td>{@code http://www.oracle.com/xml/jaxp/properties/isStandalone}</td>
844
* </tr>
845
* <tr>
846
* <td>{@systemProperty jdk.xml.xsltcIsStandalone}</td>
847
* <td>{@code http://www.oracle.com/xml/is-standalone}<br>
848
* {@code http://www.oracle.com/xml/jaxp/properties/xsltcIsStandalone}</td>
849
* </tr>
850
* <tr>
851
* <td>{@code jdk.xml.extensionClassLoader}</td>
852
* <td>{@code jdk.xml.transform.extensionClassLoader}</td>
853
* </tr>
854
* <tr>
855
* <td>{@systemProperty jdk.xml.enableExtensionFunctions}</td>
856
* <td>{@code http://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions}</td>
857
* </tr>
858
* </tbody>
859
* </table>
860
*
861
* @uses javax.xml.datatype.DatatypeFactory
862
* @uses javax.xml.parsers.DocumentBuilderFactory
863
* @uses javax.xml.parsers.SAXParserFactory
864
* @uses javax.xml.stream.XMLEventFactory
865
* @uses javax.xml.stream.XMLInputFactory
866
* @uses javax.xml.stream.XMLOutputFactory
867
* @uses javax.xml.transform.TransformerFactory
868
* @uses javax.xml.validation.SchemaFactory
869
* @uses javax.xml.xpath.XPathFactory
870
* @uses org.xml.sax.XMLReader
871
*
872
* @moduleGraph
873
* @since 9
874
*/
875
module java.xml {
876
exports javax.xml;
877
exports javax.xml.catalog;
878
exports javax.xml.datatype;
879
exports javax.xml.namespace;
880
exports javax.xml.parsers;
881
exports javax.xml.stream;
882
exports javax.xml.stream.events;
883
exports javax.xml.stream.util;
884
exports javax.xml.transform;
885
exports javax.xml.transform.dom;
886
exports javax.xml.transform.sax;
887
exports javax.xml.transform.stax;
888
exports javax.xml.transform.stream;
889
exports javax.xml.validation;
890
exports javax.xml.xpath;
891
exports org.w3c.dom;
892
exports org.w3c.dom.bootstrap;
893
exports org.w3c.dom.events;
894
exports org.w3c.dom.ls;
895
exports org.w3c.dom.ranges;
896
exports org.w3c.dom.traversal;
897
exports org.w3c.dom.views;
898
exports org.xml.sax;
899
exports org.xml.sax.ext;
900
exports org.xml.sax.helpers;
901
902
exports com.sun.org.apache.xml.internal.dtm to
903
java.xml.crypto;
904
exports com.sun.org.apache.xml.internal.utils to
905
java.xml.crypto;
906
exports com.sun.org.apache.xpath.internal to
907
java.xml.crypto;
908
exports com.sun.org.apache.xpath.internal.compiler to
909
java.xml.crypto;
910
exports com.sun.org.apache.xpath.internal.functions to
911
java.xml.crypto;
912
exports com.sun.org.apache.xpath.internal.objects to
913
java.xml.crypto;
914
exports com.sun.org.apache.xpath.internal.res to
915
java.xml.crypto;
916
917
uses javax.xml.datatype.DatatypeFactory;
918
uses javax.xml.parsers.DocumentBuilderFactory;
919
uses javax.xml.parsers.SAXParserFactory;
920
uses javax.xml.stream.XMLEventFactory;
921
uses javax.xml.stream.XMLInputFactory;
922
uses javax.xml.stream.XMLOutputFactory;
923
uses javax.xml.transform.TransformerFactory;
924
uses javax.xml.validation.SchemaFactory;
925
uses javax.xml.xpath.XPathFactory;
926
uses org.xml.sax.XMLReader;
927
}
928
929