Module java.xml

module java.xml
Defines the Java API for XML Processing (JAXP), the Streaming API for XML (StAX), the Simple API for XML (SAX), and the W3C Document Object Model (DOM) API.
Implementation Note:

Implementation Specific Features and Properties

In addition to the standard features and properties described within the public APIs of this module, the JDK implementation supports a further number of implementation specific features and properties. This section describes the naming convention, System Properties,, scope and order, and processors to which a property applies. A table listing the implementation specific features and properties which the implementation currently supports can be found at the end of this note.

Naming Convention

The names of the features and properties are fully qualified, composed of a prefix and name.


The prefix for JDK properties is defined as:
The prefix for features:
The prefix for System Properties:


A name may consist of one or multiple words that are case-sensitive. All letters of the first word shall be in lowercase, while the first letter of each subsequent word capitalized.

An example of a property that indicates whether an XML document is standalone would thus have a format:
and a corresponding System Property:

System Properties

A property may have a corresponding System Property that has the same name except the prefix as shown above. A System Property should be set prior to the creation of a processor and may be cleared afterwards.

A system property can be specified in the file to set the behavior for all invocations of the JDK or JRE. The format is system-property-name=value. For example:

Scope and Order

The XMLConstants.FEATURE_SECURE_PROCESSING feature (hereafter referred to as FSP) is required for XML processors including DOM, SAX, Schema Validation, XSLT, and XPath. Any properties flagged as "security: yes" (hereafter referred to as security properties) in table Features And Properties are enforced when FSP is set to true. Such enforcement includes setting security features to true and limits to the defined values shown in the table. The property values will not be affected, however, when setting FSP to false.

When the Java Security Manager is present, FSP is set to true and can not be turned off. The security properties are therefore enforced.

Properties specified in the file affect all invocations of the JDK and JRE, and will override their default values, or those that may have been set by FSP.

System properties, when set, affect the invocation of the JDK and JRE, and override the default settings or that set in, or those that may have been set by FSP.

JAXP properties specified through JAXP factories or processors (e.g. SAXParser) take preference over system properties, the file, as well as FSP.

Processor Support

Features and properties may be supported by one or more processors. The following table lists the processors by IDs that can be used for reference.

ID Name How to set the property
DOM DOM Parser DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setAttribute(name, value);
SAX SAX Parser SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
parser.setProperty(name, value);
StAX StAX Parser XMLInputFactory xif = XMLInputFactory.newInstance();
xif.setProperty(name, value);
Validation Schema Validator SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);
schemaFactory.setProperty(name, value);
Transform Schema Validator TransformerFactory factory = TransformerFactory.newInstance();
factory.setAttribute(name, value);
DOMLS DOM Load and Save LSSerializer serializer = domImplementation.createLSSerializer();
serializer.getDomConfig().setParameter(name, value);

Implementation Specific Features and Properties

This section lists features and properties supported by the JDK implementation.

Features and Properties
Name [1] Description System Property [2] [2] Value [3] Security [4] Supported Processor [5] Since [6]
Type Value Default
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 when the property format-pretty-print is set to true. Unlike the property xml-declaration, this property does not have an effect on whether an XML declaration should be written out. yes yes boolean true/false false No DOMLS 17

[1] The name of a property. The fully-qualified name, prefix + name, should be used when setting the property.

[2] A value "yes" indicates there is a corresponding System Property for the property, "no" otherwise.

[3] The value must be exactly as listed in this table, case-sensitive. The value type for the corresponding System Property is String. For boolean type, the system property is true only if it is "true" and false otherwise.

[4] A value "yes" indicates the property is a Security Property. Refer to the Scope and Order on how FSP may affect the value of a Security Property.

[5] One or more processors that support the property. The values of the field are IDs described in table Processors.

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

Module Graph:
Module graph for java.xmlModule graph for java.xml