/* * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /** * Defines the Java APIs for XML Processing (JAXP). * * * *

The JAXP APIs

* JAXP comprises a set of APIs built upon a number of XML technologies and * standards that are essential for XML processing. These include APIs for: * * * *

Factories and Processors

* Factories are the entry points of each API, providing methods to allow applications * to set JAXP Properties programmatically, before * creating processors. The Configuration section provides more * details on this. Factories also support the * JAXP Lookup Mechanism, in which applications can be * deployed with third party implementations to use instead of JDK implementations *

* * Processors are aggregates of parsers (or readers), serializers (or writers), * validators, and transformers that control and perform the processing in their * respective areas. They are defined in their relevant packages. * In the {@link javax.xml.parsers parsers} package for example, * are the {@link javax.xml.parsers.DocumentBuilder DocumentBuilder} and * {@link javax.xml.parsers.SAXParser SAXParser}, that represent the DOM and * SAX processors. *

* The processors are configured and instantiated with their corresponding factories. * The DocumentBuilder and SAXParser for example are constructed with the * {@link javax.xml.parsers.DocumentBuilderFactory DocumentBuilderFactory} * and {@link javax.xml.parsers.SAXParserFactory SAXParserFactory} respectively. * *

Configuration

* When a JAXP factory is invoked for the first time, it performs a configuration * process to determine the implementation to be used and its subsequent behaviors. * During configuration, the factory examines configuration sources such as the * JAXP Properties, * System Properties, * and the JAXP Configuration File, and sets the values * following the Property Precedence. The terminologies and * process are defined below. * *

JAXP Properties

* JAXP properties are configuration settings that are applied to XML processors. * They can be used to control and customize the behavior of a processor. * Depending on the JAXP API that is being used, JAXP properties may be referred * to as Attributes, Properties, or Features. * *

System Properties

* Select JAXP properties have corresponding System Properties allowing the properties * to be set at runtime, on the command line, or within the * JAXP Configuration File. * For example, the System Property {@code javax.xml.catalog.resolve} may be used * to set the {@link javax.xml.catalog.CatalogFeatures CatalogFeatures}' RESOLVE * property. *

* The exact time at which system properties are read is unspecified. In order to * ensure that the desired values are properly applied, applications should ensure * that system properties are set appropriately prior to the creation of the first * JAXP factory and are not modified thereafter. * *

Configuration File

* JAXP supports the use of configuration files for * specifying the implementation class to load for the JAXP factories * as well as for setting JAXP properties. *

* Configuration files are Java {@link java.util.Properties} files that consist * of mappings between system properties and their values defined by various APIs * or processes. The following configuration file entries demonstrate setting the * {@code javax.xml.parsers.DocumentBuilderFactory} * and {@code CatalogFeatures.RESOLVE} properties: * * {@snippet : * javax.xml.parsers.DocumentBuilderFactory=packagename.DocumentBuilderFactoryImpl * javax.xml.catalog.resolve=strict * } * *

{@code jaxp.properties} File

* By default, JAXP looks for the configuration file {@code jaxp.properties}, * located in the ${java.home}/conf directory; and if the file exists, loads the * specified properties to customize the behavior of the XML factories and processors. *

* The {@code jaxp.properties} file will be read only once during the initialization * of the JAXP implementation and cached in memory. If there is an error accessing * or reading the file, the configuration process proceeds as if the file does not exist. * *

User-defined Configuration File

* In addition to the {@code jaxp.properties} file, the system property * {@systemProperty java.xml.config.file} can be set to specify the location of * a configuration file. If the {@code java.xml.config.file} property is included * within a configuration file, it will be ignored. * *

* When the {@code java.xml.config.file} is specified, the configuration file will be * read and the included properties will override the same properties that were * defined in the {@code jaxp.properties} file. If the {@code java.xml.config.file} * has not been set when the JAXP implementation is initialized, no further attempt * will be made to check for its existence. *

* The {@code java.xml.config.file} value must contain a valid pathname * to a configuration file. If the pathname is not absolute, it will be considered * relative to the working directory of the JVM. * If there is an error reading the configuration file, the configuration process * proceeds as if the {@code java.xml.config.file} property was not set. * Implementations may optionally issue a warning message. * *

Property Precedence

* JAXP properties can be set in multiple ways, including by API methods, system * properties, and the JAXP Configuration File. When not * explicitly set, they will be initialized with default values or more restrictive * values when * {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING FEATURE_SECURE_PROCESSING} * (FSP) is enabled. The configuration order of precedence for properties is as * follows, from highest to lowest: * * * * Using the {@link javax.xml.catalog.CatalogFeatures CatalogFeatures}' RESOLVE * property as an example, the following illustrates how these rules are applied: * * *

JAXP Lookup Mechanism

* JAXP defines an ordered lookup procedure to determine the implementation class * to load for the JAXP factories. Factories that support the mechanism are listed * in the table below along with the method, System Property, and System * Default method to be used in the procedure. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
JAXP Factories
FactoryMethodSystem PropertySystem Default
* {@link javax.xml.datatype.DatatypeFactory DatatypeFactory} * {@link javax.xml.datatype.DatatypeFactory#newInstance() newInstance()}{@code javax.xml.datatype.DatatypeFactory}{@link javax.xml.datatype.DatatypeFactory#newDefaultInstance() newDefaultInstance()}
* {@link javax.xml.parsers.DocumentBuilderFactory DocumentBuilderFactory} * {@link javax.xml.parsers.DocumentBuilderFactory#newInstance() newInstance()}{@code javax.xml.parsers.DocumentBuilderFactory}{@link javax.xml.parsers.DocumentBuilderFactory#newDefaultInstance() newDefaultInstance()}
* {@link javax.xml.parsers.SAXParserFactory SAXParserFactory} * {@link javax.xml.parsers.SAXParserFactory#newInstance() newInstance()}{@code javax.xml.parsers.SAXParserFactory}{@link javax.xml.parsers.SAXParserFactory#newDefaultInstance() newDefaultInstance()}
* {@link javax.xml.stream.XMLEventFactory XMLEventFactory} * {@link javax.xml.stream.XMLEventFactory#newFactory() newFactory()}{@code javax.xml.stream.XMLEventFactory}{@link javax.xml.stream.XMLEventFactory#newDefaultFactory() newDefaultFactory()}
* {@link javax.xml.stream.XMLInputFactory XMLInputFactory} * {@link javax.xml.stream.XMLInputFactory#newFactory() newFactory()}{@code javax.xml.stream.XMLInputFactory}{@link javax.xml.stream.XMLInputFactory#newDefaultFactory() newDefaultFactory()}
* {@link javax.xml.stream.XMLOutputFactory XMLOutputFactory} * {@link javax.xml.stream.XMLOutputFactory#newFactory() newFactory()}{@code javax.xml.stream.XMLOutputFactory}{@link javax.xml.stream.XMLOutputFactory#newDefaultFactory() newDefaultFactory()}
* {@link javax.xml.transform.TransformerFactory TransformerFactory} * {@link javax.xml.transform.TransformerFactory#newInstance() newInstance()}{@code javax.xml.transform.TransformerFactory}{@link javax.xml.transform.TransformerFactory#newDefaultInstance() newDefaultInstance()}
* {@link javax.xml.validation.SchemaFactory SchemaFactory} * {@link javax.xml.validation.SchemaFactory#newInstance(java.lang.String) newInstance(schemaLanguage)}{@code javax.xml.validation.SchemaFactory:}schemaLanguage[1]{@link javax.xml.validation.SchemaFactory#newDefaultInstance() newDefaultInstance()}
* {@link javax.xml.xpath.XPathFactory XPathFactory} * {@link javax.xml.xpath.XPathFactory#newInstance(java.lang.String) newInstance(uri)}{@link javax.xml.xpath.XPathFactory#DEFAULT_PROPERTY_NAME DEFAULT_PROPERTY_NAME} + ":uri"[2]{@link javax.xml.xpath.XPathFactory#newDefaultInstance() newDefaultInstance()}
* * [1] where schemaLanguage is the parameter to the * {@link javax.xml.validation.SchemaFactory#newInstance(java.lang.String) newInstance(schemaLanguage)} * method. *

* [2] where uri is the parameter to the * {@link javax.xml.xpath.XPathFactory#newInstance(java.lang.String) newInstance(uri)} * method. * *

Lookup Procedure

* The order of precedence for locating the implementation class of a * JAXP Factory is as follows, from highest to lowest: * * * *
* @implNote * * * *

JDK built-in Catalog

* The JDK has a built-in catalog that hosts DTDs and XSDs list in the following table. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
DTDs and XSDs in JDK built-in Catalog
SourceFiles
* {@link java.util.prefs.Preferences java.util.prefs.Preferences} * preferences.dtd *
* {@link java.util.Properties java.util.Properties} * properties.dtd *
* XML Schema Part 1: Structures Second Edition
* XML Schema Part 2: Datatypes Second Edition *
* XMLSchema.dtd
* datatypes.dtd
* XMLSchema.xsd
* datatypes.xsd *
* XHTML™ 1.0 The Extensible HyperText Markup Language * * xhtml1-frameset.dtd
* xhtml1-strict.dtd
* xhtml1-transitional.dtd *
* XHTML™ 1.0 in XML Schema * * xhtml1-frameset.xsd
* xhtml1-strict.xsd
* xhtml1-transitional.xsd *
* XHTML™ 1.1 - Module-based XHTML - Second Edition * * xhtml11.dtd *
* XHTML 1.1 XML Schema Definition * * xhtml11.xsd *
* XML DTD for W3C specifications * * xmlspec.dtd *
* The "xml:" Namespace * * xml.xsd *
*

* The catalog is loaded once when the first JAXP processor factory is created. * *

External Resource Resolution Process with the built-in Catalog

* The JDK creates a {@link javax.xml.catalog.CatalogResolver CatalogResolver} * with the built-in catalog when needed. This CatalogResolver is used as the * default external resource resolver. *

* XML processors may use resolvers (such as {@link org.xml.sax.EntityResolver EntityResolver}, * {@link javax.xml.stream.XMLResolver XMLResolver}, and {@link javax.xml.catalog.CatalogResolver CatalogResolver}) * to handle external references. In the absence of the user-defined resolvers, * the JDK XML processors fall back to the default CatalogResolver to attempt to * find a resolution before making a connection to fetch the resources. The fall-back * also takes place if a user-defined resolver exists but allows the process to * continue when unable to resolve the resource. *

* If the default CatalogResolver is unable to locate a resource, it may signal * the XML processors to continue processing, or skip the resource, or * throw a CatalogException. The behavior is configured with the * {@code jdk.xml.jdkcatalog.resolve} property. * *

Implementation Specific Properties

* In addition to the standard JAXP Properties, * the JDK implementation supports a number of implementation specific properties * whose name is prefixed by "{@code jdk.xml.}". These properties also follow the * configuration process as defined in the Configuration section. *

* Refer to the Implementation Specific Properties table * for the list of properties supported by the JDK implementation. * *

Processor Support

* The properties may be supported by one or more processors as listed in the table * below. Depending on the type of the property, they may be set via * Method 1: setAttribute/Parameter/Property or 2: setFeature as illustrated * in the relevant columns. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Processors
IDNameMethod 1: setAttribute/Parameter/PropertyMethod 2: setFeature
DOMDOM Parser * {@code DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();}
* {@code dbf.setAttribute(name, value);} *
* {@code DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();}
* {@code dbf.setFeature(name, value);} *
SAXSAX Parser * {@code SAXParserFactory spf = SAXParserFactory.newInstance();}
* {@code SAXParser parser = spf.newSAXParser();}
* {@code parser.setProperty(name, value);} *
* {@code SAXParserFactory spf = SAXParserFactory.newInstance();}
* {@code spf.setFeature(name, value);}
*
StAXStAX Parser * {@code XMLInputFactory xif = XMLInputFactory.newInstance();}
* {@code xif.setProperty(name, value);} *
* {@code XMLInputFactory xif = XMLInputFactory.newInstance();}
* {@code xif.setProperty(name, value);} *
ValidationXML Validation API * {@code SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);}
* {@code schemaFactory.setProperty(name, value);} *
* {@code SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);}
* {@code schemaFactory.setFeature(name, value);} *
TransformXML Transform API * {@code TransformerFactory factory = TransformerFactory.newInstance();}
* {@code factory.setAttribute(name, value);} *
* {@code TransformerFactory factory = TransformerFactory.newInstance();}
* {@code factory.setFeature(name, value);} *
XSLTC SerializerXSLTC Serializer * {@code Transformer transformer = TransformerFactory.newInstance().newTransformer();}
* {@code transformer.setOutputProperty(name, value);} *
*
DOMLSDOM Load and Save * {@code LSSerializer serializer = domImplementation.createLSSerializer();}
* {@code serializer.getDomConfig().setParameter(name, value);} *
*
XPathXPath * {@code XPathFactory factory = XPathFactory.newInstance();}
* {@code factory.setProperty(name, value);} *
* {@code XPathFactory factory = XPathFactory.newInstance();}
* {@code factory.setFeature(name, value);} *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Implementation Specific Properties
Full Name (prefix {@code jdk.xml.}) * [1]DescriptionSystem Property [2]Value [3]Security [4]Supported Processor [5]Since [6]
TypeValueDefaultEnforcedIDSet Method
{@systemProperty jdk.xml.entityExpansionLimit}Limits the number of entity expansions. * yesInteger * A positive integer. A value less than or equal to 0 indicates no limit. * If the value is not an integer, a NumberFormatException is thrown. * 25002500Yes * DOM
* SAX
* StAX
* Validation
* Transform *
Method 18
{@systemProperty jdk.xml.elementAttributeLimit}Limits the number of attributes an element can have. * 200200
{@systemProperty jdk.xml.maxOccurLimit}Limits the number of content model nodes that may be created when building * a grammar for a W3C XML Schema that contains maxOccurs attributes with values * other than "unbounded". * 50005000
{@systemProperty jdk.xml.totalEntitySizeLimit}Limits the total size of all entities that include general and parameter * entities. The size is calculated as an aggregation of all entities. * 100000100000
{@systemProperty jdk.xml.maxGeneralEntitySizeLimit}Limits the maximum size of any general entities. * 100000100000
{@systemProperty jdk.xml.maxParameterEntitySizeLimit}Limits the maximum size of any parameter entities, including the result * of nesting multiple parameter entities. * 1500015000
{@systemProperty jdk.xml.entityReplacementLimit}Limits the total number of nodes in all entity references. * 100000100000
{@systemProperty jdk.xml.maxElementDepth}Limits the maximum element depth. * 100100
{@systemProperty jdk.xml.maxXMLNameLimit}Limits the maximum size of XML names, including element name, attribute * name and namespace prefix and URI. * 10001000
{@systemProperty jdk.xml.isStandalone}Indicates that the serializer should treat the output as a * standalone document. The property can be used to ensure a newline is written * after the XML declaration. Unlike the property * {@link org.w3c.dom.ls.LSSerializer#getDomConfig() xml-declaration}, this property * does not have an effect on whether an XML declaration should be written out. * booleantrue/falsefalseN/ANoDOMLS17
{@systemProperty jdk.xml.xsltcIsStandalone}Indicates that the XSLTC serializer should * treat the output as a standalone document. The property can be used to ensure * a newline is written after the XML declaration. Unlike the property * {@link javax.xml.transform.OutputKeys#OMIT_XML_DECLARATION OMIT_XML_DECLARATION}, * this property does not have an effect on whether an XML declaration should be * written out. *

* This property behaves similar to that for DOMLS above, * except that it is for the XSLTC Serializer * and its value is a String. *

Stringyes/nonoN/ANoXSLTC Serializer17
{@systemProperty jdk.xml.cdataChunkSize}Instructs the parser to return the data in a CData section in a single chunk * when the property is zero or unspecified, or in multiple chunks when it is greater * than zero. The parser shall split the data by linebreaks, and any chunks that are * larger than the specified size to ones that are equal to or smaller than the size. * yesIntegerA positive integer. A value less than * or equal to 0 indicates that the property is not specified. If the value is not * an integer, a NumberFormatException is thrown.0N/ANoSAX
StAX
9
jdk.xml.extensionClassLoaderSets a non-null ClassLoader instance to be used for loading XSLTC java * extension functions. * noObjectA reference to a ClassLoader object. Null if the value is not specified.nullN/ANoTransform9
jdk.xml.xpathExprGrpLimitLimits the number of groups an XPath expression can contain. * yesIntegerA positive integer. A value less than or equal to 0 indicates no limit. * If the value is not an integer, a NumberFormatException is thrown. 1010Yes * Transform
* XPath *
19
jdk.xml.xpathExprOpLimitLimits the number of operators an XPath expression can contain. * 100100
jdk.xml.xpathTotalOpLimitLimits the total number of XPath operators in an XSL Stylesheet. * 1000010000 * Transform
*
{@systemProperty jdk.xml.enableExtensionFunctions}Determines if XSLT and XPath extension functions are to be allowed. * yesBoolean * true or false. True indicates that extension functions are allowed; False otherwise. * truefalseYes * Transform
* XPath *
Method 28
{@systemProperty jdk.xml.overrideDefaultParser}Enables the use of a 3rd party's parser implementation to override the * system-default parser for the JDK's Transform, Validation and XPath implementations. * * true or false. True enables the use of 3rd party's parser implementations * to override the system-default implementation during XML Transform, Validation * or XPath operation. False disables the use of 3rd party's parser * implementations. * falsefalseYes * Transform
* Validation
* XPath *
Method 29
{@systemProperty jdk.xml.resetSymbolTable}Instructs the parser to reset its internal symbol table during each parse operation. * * true or false. True indicates that the SymbolTable associated with a parser needs to be * reallocated during each parse operation.
* False indicates that the parser's SymbolTable instance shall be reused * during subsequent parse operations. *
falseN/ANo * SAX * Method 29
{@systemProperty jdk.xml.dtd.support}[7]Instructs the parser to handle DTDs in accordance with the setting of this property. * The options are: *
    *
  • * {@code allow} -- indicates that the parser shall continue processing DTDs; *

  • *
  • * {@code ignore} -- indicates that the parser shall skip DTDs; *

  • *
  • * {@code deny} -- indicates that the parser shall reject DTDs as an error. * The parser shall report the error in accordance with its relevant specification. *

  • *
*
String * {@code allow, ignore, and deny}. Values are case-insensitive. * allowNoYes * DOM
* SAX
* StAX
* Validation
* Transform *
Method 122
{@systemProperty jdk.xml.jdkcatalog.resolve}Instructs the JDK default CatalogResolver to act in accordance with the setting * of this property when unable to resolve an external reference with the built-in Catalog. * The options are: *
    *
  • * {@code continue} -- Indicates that the processing should continue *

  • *
  • * {@code ignore} -- Indicates that the reference is skipped *

  • *
  • * {@code strict} -- Indicates that the resolver should throw a CatalogException *

  • *
*
String * {@code continue, ignore, and strict}. Values are case-insensitive. * continueNoYes * DOM
* SAX
* StAX
* Validation
* Transform *
Method 122
*

* [1] The full name of a property should be used to set the property. *

* [2] A value "yes" indicates there is a corresponding System Property * for the property, "no" otherwise. The name of the System Property is the same * as that of the property. * *

* [3] The value must be exactly as listed in this table, case-sensitive. * The value of the corresponding System Property is the String representation of * the property value. If the type is boolean, the system property is true only * if it is "true"; If the type is String, the system property is true only if * it is exactly the same string representing the positive value (e.g. "yes" for * {@code xsltcIsStandalone}); The system property is false otherwise. If the type * is Integer, the value of the System Property is the String representation of * the value (e.g. "64000" for {@code entityExpansionLimit}). * *

* [4] A value "yes" indicates the property is a Security Property. As indicated * in the Property Precedence, the values listed in the column * {@code enforced} will be used to initialize these properties when * {@link javax.xml.XMLConstants#FEATURE_SECURE_PROCESSING FSP} is true. * *

* [5] One or more processors that support the property. The IDs and Set Method * are as shown in the table Processors. *

* [6] Indicates the initial release the property is introduced. *

* [7] The {@code jdk.xml.dtd.support} property complements the two existing * DTD-related properties, {@code disallow-doctype-decl}(fully qualified name: * {@code http://apache.org/xml/features/disallow-doctype-decl}) and supportDTD * ({@code javax.xml.stream.supportDTD}), by providing a uniformed support for the * processors listed and a system property that can be used in the * JAXP Configuration File. When {@code disallow-doctype-decl} is * set on the DOM or SAX factory, or supportDTD on StAX factory, the {@code jdk.xml.dtd.support} * property will have no effect. *

* These three properties control whether DTDs as a whole shall be processed. When * they are set to deny or ignore, other properties that regulate a part or an * aspect of DTD shall have no effect. * *

Legacy Property Names (deprecated)

* JDK releases prior to JDK 17 support the use of URI style prefix for properties. * These legacy property names are deprecated as of JDK 17 and may be removed * in future releases. If both new and legacy properties are set, the new property * names take precedence regardless of how and where they are set. The overriding order * as defined in Property Precedence thus becomes: * * *

* The following table lists the properties and their corresponding legacy names. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Legacy Property Names (deprecated since 17)
PropertyLegacy Property Name(s)
{@systemProperty jdk.xml.entityExpansionLimit}{@code http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit}
{@systemProperty jdk.xml.elementAttributeLimit}{@code http://www.oracle.com/xml/jaxp/properties/elementAttributeLimit}
{@systemProperty jdk.xml.maxOccurLimit}{@code http://www.oracle.com/xml/jaxp/properties/maxOccurLimit}
{@systemProperty jdk.xml.totalEntitySizeLimit}{@code http://www.oracle.com/xml/jaxp/properties/totalEntitySizeLimit}
{@systemProperty jdk.xml.maxGeneralEntitySizeLimit}{@code http://www.oracle.com/xml/jaxp/properties/maxGeneralEntitySizeLimit}
{@systemProperty jdk.xml.maxParameterEntitySizeLimit}{@code http://www.oracle.com/xml/jaxp/properties/maxParameterEntitySizeLimit}
{@systemProperty jdk.xml.entityReplacementLimit}{@code http://www.oracle.com/xml/jaxp/properties/entityReplacementLimit}
{@systemProperty jdk.xml.maxElementDepth}{@code http://www.oracle.com/xml/jaxp/properties/maxElementDepth}
{@systemProperty jdk.xml.maxXMLNameLimit}{@code http://www.oracle.com/xml/jaxp/properties/maxXMLNameLimit}
{@systemProperty jdk.xml.isStandalone}{@code http://www.oracle.com/xml/jaxp/properties/isStandalone}
{@systemProperty jdk.xml.xsltcIsStandalone}{@code http://www.oracle.com/xml/is-standalone}
* {@code http://www.oracle.com/xml/jaxp/properties/xsltcIsStandalone}
{@code jdk.xml.extensionClassLoader}{@code jdk.xml.transform.extensionClassLoader}
{@systemProperty jdk.xml.enableExtensionFunctions}{@code http://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions}
* * @uses javax.xml.datatype.DatatypeFactory * @uses javax.xml.parsers.DocumentBuilderFactory * @uses javax.xml.parsers.SAXParserFactory * @uses javax.xml.stream.XMLEventFactory * @uses javax.xml.stream.XMLInputFactory * @uses javax.xml.stream.XMLOutputFactory * @uses javax.xml.transform.TransformerFactory * @uses javax.xml.validation.SchemaFactory * @uses javax.xml.xpath.XPathFactory * @uses org.xml.sax.XMLReader * * @moduleGraph * @since 9 */ module java.xml { exports javax.xml; exports javax.xml.catalog; exports javax.xml.datatype; exports javax.xml.namespace; exports javax.xml.parsers; exports javax.xml.stream; exports javax.xml.stream.events; exports javax.xml.stream.util; exports javax.xml.transform; exports javax.xml.transform.dom; exports javax.xml.transform.sax; exports javax.xml.transform.stax; exports javax.xml.transform.stream; exports javax.xml.validation; exports javax.xml.xpath; exports org.w3c.dom; exports org.w3c.dom.bootstrap; exports org.w3c.dom.events; exports org.w3c.dom.ls; exports org.w3c.dom.ranges; exports org.w3c.dom.traversal; exports org.w3c.dom.views; exports org.xml.sax; exports org.xml.sax.ext; exports org.xml.sax.helpers; exports com.sun.org.apache.xml.internal.dtm to java.xml.crypto; exports com.sun.org.apache.xml.internal.utils to java.xml.crypto; exports com.sun.org.apache.xpath.internal to java.xml.crypto; exports com.sun.org.apache.xpath.internal.compiler to java.xml.crypto; exports com.sun.org.apache.xpath.internal.functions to java.xml.crypto; exports com.sun.org.apache.xpath.internal.objects to java.xml.crypto; exports com.sun.org.apache.xpath.internal.res to java.xml.crypto; uses javax.xml.datatype.DatatypeFactory; uses javax.xml.parsers.DocumentBuilderFactory; uses javax.xml.parsers.SAXParserFactory; uses javax.xml.stream.XMLEventFactory; uses javax.xml.stream.XMLInputFactory; uses javax.xml.stream.XMLOutputFactory; uses javax.xml.transform.TransformerFactory; uses javax.xml.validation.SchemaFactory; uses javax.xml.xpath.XPathFactory; uses org.xml.sax.XMLReader; }