Path: blob/master/src/java.xml/share/classes/module-info.java
40930 views
/*1* Copyright (c) 2014, 2021, 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>410* </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">System Property <a href="#Note2">[2]</a></th>435* <th scope="col" rowspan="2">jaxp.properties <a href="#Note2">[2]</a></th>436* <th scope="col" colspan="4" style="text-align:center">Value <a href="#Note3">[3]</a></th>437* <th scope="col" rowspan="2">Security <a href="#Note4">[4]</a></th>438* <th scope="col" rowspan="2">Supported Processor <a href="#Note5">[5]</a></th>439* <th scope="col" rowspan="2">Since <a href="#Note6">[6]</a></th>440* </tr>441* <tr>442* <th scope="col">Type</th>443* <th scope="col">Value</th>444* <th scope="col">Default</th>445* <th scope="col">Enforced</th>446* </tr>447* </thead>448*449* <tbody>450*451* <tr>452* <td id="EELimit">{@systemProperty jdk.xml.entityExpansionLimit}</td>453* <td>Limits the number of entity expansions.454* </td>455* <td style="text-align:center" rowspan="9">yes</td>456* <td style="text-align:center" rowspan="9">yes</td>457* <td style="text-align:center" rowspan="9">Integer</td>458* <td rowspan="9">459* A positive integer. A value less than or equal to 0 indicates no limit.460* If the value is not an integer, a NumberFormatException is thrown.461* </td>462* <td style="text-align:center">64000</td>463* <td style="text-align:center">64000</td>464* <td style="text-align:center" rowspan="9">Yes</td>465* <td style="text-align:center" rowspan="9">466* <a href="#DOM">DOM</a><br>467* <a href="#SAX">SAX</a><br>468* <a href="#StAX">StAX</a><br>469* <a href="#Validation">Validation</a><br>470* <a href="#Transform">Transform</a>471* </td>472* <td style="text-align:center" rowspan="9">8</td>473* </tr>474* <tr>475* <td id="EALimit">{@systemProperty jdk.xml.elementAttributeLimit}</td>476* <td>Limits the number of attributes an element can have.477* </td>478* <td style="text-align:center">10000</td>479* <td style="text-align:center">10000</td>480* </tr>481* <tr>482* <td id="OccurLimit">{@systemProperty jdk.xml.maxOccurLimit}</td>483* <td>Limits the number of content model nodes that may be created when building484* a grammar for a W3C XML Schema that contains maxOccurs attributes with values485* other than "unbounded".486* </td>487* <td style="text-align:center">5000</td>488* <td style="text-align:center">5000</td>489* </tr>490* <tr>491* <td id="SizeLimit">{@systemProperty jdk.xml.totalEntitySizeLimit}</td>492* <td>Limits the total size of all entities that include general and parameter493* entities. The size is calculated as an aggregation of all entities.494* </td>495* <td style="text-align:center">5x10^7</td>496* <td style="text-align:center">5x10^7</td>497* </tr>498* <tr>499* <td id="GELimit">{@systemProperty jdk.xml.maxGeneralEntitySizeLimit}</td>500* <td>Limits the maximum size of any general entities.501* </td>502* <td style="text-align:center">0</td>503* <td style="text-align:center">0</td>504* </tr>505* <tr>506* <td id="PELimit">{@systemProperty jdk.xml.maxParameterEntitySizeLimit}</td>507* <td>Limits the maximum size of any parameter entities, including the result508* of nesting multiple parameter entities.509* </td>510* <td style="text-align:center">10^6</td>511* <td style="text-align:center">10^6</td>512* </tr>513* <tr>514* <td id="ERLimit">{@systemProperty jdk.xml.entityReplacementLimit}</td>515* <td>Limits the total number of nodes in all entity references.516* </td>517* <td style="text-align:center">3x10^6</td>518* <td style="text-align:center">3x10^6</td>519* </tr>520* <tr>521* <td id="ElementDepth">{@systemProperty jdk.xml.maxElementDepth}</td>522* <td>Limits the maximum element depth.523* </td>524* <td style="text-align:center">0</td>525* <td style="text-align:center">0</td>526* </tr>527* <tr>528* <td id="NameLimit">{@systemProperty jdk.xml.maxXMLNameLimit}</td>529* <td>Limits the maximum size of XML names, including element name, attribute530* name and namespace prefix and URI.531* </td>532* <td style="text-align:center">1000</td>533* <td style="text-align:center">1000</td>534* </tr>535*536* <tr>537* <td id="ISSTANDALONE">{@systemProperty jdk.xml.isStandalone}</td>538* <td>Indicates that the serializer should treat the output as a539* standalone document. The property can be used to ensure a newline is written540* after the XML declaration. Unlike the property541* {@link org.w3c.dom.ls.LSSerializer#getDomConfig() xml-declaration}, this property542* does not have an effect on whether an XML declaration should be written out.543* </td>544* <td style="text-align:center">yes</td>545* <td style="text-align:center">yes</td>546* <td style="text-align:center">boolean</td>547* <td style="text-align:center">true/false</td>548* <td style="text-align:center">false</td>549* <td style="text-align:center">N/A</td>550* <td style="text-align:center">No</td>551* <td style="text-align:center"><a href="#DOMLS">DOMLS</a></td>552* <td style="text-align:center">17</td>553* </tr>554* <tr>555* <td id="XSLTCISSTANDALONE">{@systemProperty jdk.xml.xsltcIsStandalone}</td>556* <td>Indicates that the <a href="#XSLTCSerializer">XSLTC serializer</a> should557* treat the output as a standalone document. The property can be used to ensure558* a newline is written after the XML declaration. Unlike the property559* {@link javax.xml.transform.OutputKeys#OMIT_XML_DECLARATION OMIT_XML_DECLARATION},560* this property does not have an effect on whether an XML declaration should be561* written out.562* <p>563* This property behaves similar to that for <a href="#DOMLS">DOMLS</a> above,564* except that it is for the <a href="#XSLTCSerializer">XSLTC Serializer</a>565* and its value is a String.566* </td>567* <td style="text-align:center">yes</td>568* <td style="text-align:center">yes</td>569* <td style="text-align:center">String</td>570* <td style="text-align:center">yes/no</td>571* <td style="text-align:center">no</td>572* <td style="text-align:center">N/A</td>573* <td style="text-align:center">No</td>574* <td style="text-align:center"><a href="#XSLTCSerializer">XSLTC Serializer</a></td>575* <td style="text-align:center">17</td>576* </tr>577* <tr>578* <td id="cdataChunkSize">{@systemProperty jdk.xml.cdataChunkSize}</td>579* <td>Instructs the parser to return the data in a CData section in a single chunk580* when the property is zero or unspecified, or in multiple chunks when it is greater581* than zero. The parser shall split the data by linebreaks, and any chunks that are582* larger than the specified size to ones that are equal to or smaller than the size.583* </td>584* <td style="text-align:center">yes</td>585* <td style="text-align:center">yes</td>586* <td style="text-align:center">Integer</td>587* <td>A positive integer. A value less than588* or equal to 0 indicates that the property is not specified. If the value is not589* an integer, a NumberFormatException is thrown.</td>590* <td style="text-align:center">0</td>591* <td style="text-align:center">N/A</td>592* <td style="text-align:center">No</td>593* <td style="text-align:center"><a href="#SAX">SAX</a><br><a href="#StAX">StAX</a></td>594* <td style="text-align:center">9</td>595* </tr>596* <tr>597* <td id="extensionClassLoader">jdk.xml.extensionClassLoader</td>598* <td>Sets a non-null ClassLoader instance to be used for loading XSLTC java599* extension functions.600* </td>601* <td style="text-align:center">no</td>602* <td style="text-align:center">no</td>603* <td style="text-align:center">Object</td>604* <td>A reference to a ClassLoader object. Null if the value is not specified.</td>605* <td style="text-align:center">null</td>606* <td style="text-align:center">N/A</td>607* <td style="text-align:center">No</td>608* <td style="text-align:center"><a href="#Transform">Transform</a></td>609* <td style="text-align:center">9</td>610* </tr>611* </tbody>612* </table>613* <p>614* The table below lists the Implementation Specific Features currently supported615* by the JDK. More features may be added in the future if necessary.616*617* <table class="striped" id="Features">618* <caption>Implementation Specific Features</caption>619* <thead>620* <tr>621* <th scope="col" rowspan="2">Full Name (<a href="#NamingConvention">prefix + name</a>)622* <a href="#Note1">[1]</a></th>623* <th scope="col" rowspan="2">Description</th>624* <th scope="col" rowspan="2">System Property <a href="#Note2">[2]</a></th>625* <th scope="col" rowspan="2">jaxp.properties <a href="#Note2">[2]</a></th>626* <th scope="col" colspan="4" style="text-align:center">Value <a href="#Note3">[3]</a></th>627* <th scope="col" rowspan="2">Security <a href="#Note4">[4]</a></th>628* <th scope="col" rowspan="2">Supported Processor <a href="#Note5">[5]</a></th>629* <th scope="col" rowspan="2">Since <a href="#Note6">[6]</a></th>630* </tr>631* <tr>632* <th scope="col">Type</th>633* <th scope="col">Value</th>634* <th scope="col">Default</th>635* <th scope="col">Enforced</th>636* </tr>637* </thead>638* <tbody>639* <tr>640* <td id="ExtFunc">{@systemProperty jdk.xml.enableExtensionFunctions}</td>641* <td>Determines if XSLT and XPath extension functions are to be allowed.642* </td>643* <td style="text-align:center" rowspan="3">yes</td>644* <td style="text-align:center" rowspan="3">yes</td>645* <td style="text-align:center" rowspan="3">Boolean</td>646* <td>647* true or false. True indicates that extension functions are allowed; False otherwise.648* </td>649* <td style="text-align:center">true</td>650* <td style="text-align:center">false</td>651* <td style="text-align:center">Yes</td>652* <td style="text-align:center">653* <a href="#Transform">Transform</a><br>654* <a href="#XPAth">XPath</a>655* </td>656* <td style="text-align:center">8</td>657* </tr>658* <tr>659* <td id="ORParser">{@systemProperty jdk.xml.overrideDefaultParser}</td>660* <td>Enables the use of a 3rd party's parser implementation to override the661* system-default parser for the JDK's Transform, Validation and XPath implementations.662* </td>663* <td>664* true or false. True enables the use of 3rd party's parser implementations665* to override the system-default implementation during XML Transform, Validation666* or XPath operation. False disables the use of 3rd party's parser667* implementations.668* </td>669* <td style="text-align:center">false</td>670* <td style="text-align:center">false</td>671* <td style="text-align:center">Yes</td>672* <td style="text-align:center">673* <a href="#Transform">Transform</a><br>674* <a href="#Validation">Validation</a><br>675* <a href="#XPAth">XPath</a>676* </td>677* <td style="text-align:center">9</td>678* </tr>679* <tr>680* <td id="symbolTable">{@systemProperty jdk.xml.resetSymbolTable}</td>681* <td>Instructs the parser to reset its internal symbol table during each parse operation.682* </td>683* <td>684* true or false. True indicates that the SymbolTable associated with a parser needs to be685* reallocated during each parse operation.<br>686* False indicates that the parser's SymbolTable instance shall be reused687* during subsequent parse operations.688* </td>689* <td style="text-align:center">false</td>690* <td style="text-align:center">N/A</td>691* <td style="text-align:center">No</td>692* <td style="text-align:center">693* <a href="#SAX">SAX</a>694* </td>695* <td style="text-align:center">9</td>696* </tr>697* </tbody>698* </table>699* <p id="Note1">700* <b>[1]</b> The full name of a property should be used to set the property.701* <p id="Note2">702* <b>[2]</b> A value "yes" indicates there is a corresponding System Property703* for the property, "no" otherwise.704*705* <p id="Note3">706* <b>[3]</b> The value must be exactly as listed in this table, case-sensitive.707* The value of the corresponding System Property is the String representation of708* the property value. If the type is boolean, the system property is true only709* if it is "true"; If the type is String, the system property is true only if710* it is exactly the same string representing the positive value (e.g. "yes" for711* {@code xsltcIsStandalone}); The system property is false otherwise. If the type712* is Integer, the value of the System Property is the String representation of713* the value (e.g. "64000" for {@code entityExpansionLimit}).714*715* <p id="Note4">716* <b>[4]</b> A value "yes" indicates the property is a Security Property. Refer717* to the <a href="#ScopeAndOrder">Scope and Order</a> on how secure processing718* may affect the value of a Security Property.719* <p id="Note5">720* <b>[5]</b> One or more processors that support the property. The values of the721* field are IDs described in table <a href="#Processor">Processors</a>.722* <p id="Note6">723* <b>[6]</b> Indicates the initial release the property is introduced.724*725* <h3>Legacy Property Names (deprecated)</h3>726* JDK releases prior to JDK 17 support the use of URI style prefix for properties.727* These legacy property names are <b>deprecated</b> as of JDK 17 and may be removed728* in future releases. If both new and legacy properties are set, the new property729* names take precedence regardless of how and where they are set. The overriding order730* as defined in <a href="#ScopeAndOrder">Scope and Order</a> thus becomes, in731* descending order:732*733* <ul>734* <li>The default value;</li>735* <li>Value set by FEATURE_SECURE_PROCESSING;</li>736* <li>Value set in jaxp.properties;</li>737* <li>Value set as System Property;</li>738* <li>Value set on factories or processors using <b>legacy property names</b>;</li>739* <li>Value set on factories or processors using new property names.</li>740* </ul>741* <p>742* The following table lists the properties and their corresponding legacy names.743*744* <table class="striped" id="LegacyProperties">745* <caption>Legacy Property Names (deprecated since 17)</caption>746* <thead>747* <tr>748* <th>Property</th>749* <th>Legacy Property Name(s)</th>750* </tr>751* </thead>752* <tbody>753* <tr>754* <td>{@systemProperty jdk.xml.entityExpansionLimit}</td>755* <td>{@code http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit}</td>756* </tr>757* <tr>758* <td>{@systemProperty jdk.xml.elementAttributeLimit}</td>759* <td>{@code http://www.oracle.com/xml/jaxp/properties/elementAttributeLimit}</td>760* </tr>761* <tr>762* <td>{@systemProperty jdk.xml.maxOccurLimit}</td>763* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxOccurLimit}</td>764* </tr>765* <tr>766* <td>{@systemProperty jdk.xml.totalEntitySizeLimit}</td>767* <td>{@code http://www.oracle.com/xml/jaxp/properties/totalEntitySizeLimit}</td>768* </tr>769* <tr>770* <td>{@systemProperty jdk.xml.maxGeneralEntitySizeLimit}</td>771* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxGeneralEntitySizeLimit}</td>772* </tr>773* <tr>774* <td>{@systemProperty jdk.xml.maxParameterEntitySizeLimit}</td>775* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxParameterEntitySizeLimit}</td>776* </tr>777* <tr>778* <td>{@systemProperty jdk.xml.entityReplacementLimit}</td>779* <td>{@code http://www.oracle.com/xml/jaxp/properties/entityReplacementLimit}</td>780* </tr>781* <tr>782* <td>{@systemProperty jdk.xml.maxElementDepth}</td>783* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxElementDepth}</td>784* </tr>785* <tr>786* <td>{@systemProperty jdk.xml.maxXMLNameLimit}</td>787* <td>{@code http://www.oracle.com/xml/jaxp/properties/maxXMLNameLimit}</td>788* </tr>789* <tr>790* <td>{@systemProperty jdk.xml.isStandalone}</td>791* <td>{@code http://www.oracle.com/xml/jaxp/properties/isStandalone}</td>792* </tr>793* <tr>794* <td>{@systemProperty jdk.xml.xsltcIsStandalone}</td>795* <td>{@code http://www.oracle.com/xml/is-standalone}<br>796* {@code http://www.oracle.com/xml/jaxp/properties/xsltcIsStandalone}</td>797* </tr>798* <tr>799* <td>{@code jdk.xml.extensionClassLoader}</td>800* <td>{@code jdk.xml.transform.extensionClassLoader}</td>801* </tr>802* <tr>803* <td>{@systemProperty jdk.xml.enableExtensionFunctions}</td>804* <td>{@code http://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions}</td>805* </tr>806* </tbody>807* </table>808*809* @uses javax.xml.datatype.DatatypeFactory810* @uses javax.xml.parsers.DocumentBuilderFactory811* @uses javax.xml.parsers.SAXParserFactory812* @uses javax.xml.stream.XMLEventFactory813* @uses javax.xml.stream.XMLInputFactory814* @uses javax.xml.stream.XMLOutputFactory815* @uses javax.xml.transform.TransformerFactory816* @uses javax.xml.validation.SchemaFactory817* @uses javax.xml.xpath.XPathFactory818* @uses org.xml.sax.XMLReader819*820* @moduleGraph821* @since 9822*/823module java.xml {824exports javax.xml;825exports javax.xml.catalog;826exports javax.xml.datatype;827exports javax.xml.namespace;828exports javax.xml.parsers;829exports javax.xml.stream;830exports javax.xml.stream.events;831exports javax.xml.stream.util;832exports javax.xml.transform;833exports javax.xml.transform.dom;834exports javax.xml.transform.sax;835exports javax.xml.transform.stax;836exports javax.xml.transform.stream;837exports javax.xml.validation;838exports javax.xml.xpath;839exports org.w3c.dom;840exports org.w3c.dom.bootstrap;841exports org.w3c.dom.events;842exports org.w3c.dom.ls;843exports org.w3c.dom.ranges;844exports org.w3c.dom.traversal;845exports org.w3c.dom.views;846exports org.xml.sax;847exports org.xml.sax.ext;848exports org.xml.sax.helpers;849850exports com.sun.org.apache.xml.internal.dtm to851java.xml.crypto;852exports com.sun.org.apache.xml.internal.utils to853java.xml.crypto;854exports com.sun.org.apache.xpath.internal to855java.xml.crypto;856exports com.sun.org.apache.xpath.internal.compiler to857java.xml.crypto;858exports com.sun.org.apache.xpath.internal.functions to859java.xml.crypto;860exports com.sun.org.apache.xpath.internal.objects to861java.xml.crypto;862exports com.sun.org.apache.xpath.internal.res to863java.xml.crypto;864865uses javax.xml.datatype.DatatypeFactory;866uses javax.xml.parsers.DocumentBuilderFactory;867uses javax.xml.parsers.SAXParserFactory;868uses javax.xml.stream.XMLEventFactory;869uses javax.xml.stream.XMLInputFactory;870uses javax.xml.stream.XMLOutputFactory;871uses javax.xml.transform.TransformerFactory;872uses javax.xml.validation.SchemaFactory;873uses javax.xml.xpath.XPathFactory;874uses org.xml.sax.XMLReader;875}876877878