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