Spec-Zone.ru › OpenJDK 17

Модуль java.xml

module java.xml
Определяет Java API для обработки XML (JAXP), Streaming API для XML (StAX), Simple API для XML (SAX) и API модели объекта документа W3C (DOM).

Механизм поиска JAXP

JAXP определяет упорядоченную процедуру поиска для определения класса реализации, который необходимо загрузить для фабрик JAXP. Фабрики, которые поддерживают этот механизм, перечислены в таблице ниже вместе с методом, именем системной переменной, файлом конфигурации и методом системного значения по умолчанию, которые будут использованы в этой процедуре.
Фабрики JAXP
Фабрика Метод Имя системной переменной Файл конфигурации Системное значение по умолчанию
DatatypeFactory newInstance() javax.xml.datatype.DatatypeFactory jaxp.properties newDefaultInstance()
DocumentBuilderFactory newInstance() javax.xml.parsers.DocumentBuilderFactory jaxp.properties newDefaultInstance()
SAXParserFactory newInstance() javax.xml.parsers.SAXParserFactory jaxp.properties newDefaultInstance()
XMLEventFactory newFactory() javax.xml.stream.XMLEventFactory stax.properties и затем jaxp.properties newDefaultFactory()
XMLInputFactory newFactory() javax.xml.stream.XMLInputFactory stax.properties и затем jaxp.properties newDefaultFactory()
XMLOutputFactory newFactory() javax.xml.stream.XMLOutputFactory stax.properties и затем jaxp.properties newDefaultFactory()
TransformerFactory newInstance() javax.xml.transform.TransformerFactory jaxp.properties newDefaultInstance()
SchemaFactory newInstance(schemaLanguage) javax.xml.validation.SchemaFactory:schemaLanguage[1] jaxp.properties newDefaultInstance()
XPathFactory newInstance(uri) DEFAULT_PROPERTY_NAME + ":uri"[2] jaxp.properties newDefaultInstance()
[1] где schemaLanguage — параметр метода newInstance(schemaLanguage).

[2] где uri — параметр метода newInstance(uri).

jaxp.properties

jaxp.properties — это файл конфигурации в стандартном формате Properties и обычно находится в каталоге conf установки Java. Он содержит полное имя класса реализации, а ключ — это имя системной переменной, определённой в таблице выше.

Файл jaxp.properties считывается реализацией только один раз, а значения кэшируются для дальнейшего использования. Если файл не существует при первой попытке его чтения, дальнейшие попытки проверки его существования не предпринимаются. Изменить значение любой переменной после её первого чтения невозможно.

stax.properties

stax.properties — это файл конфигурации, который работает так же, как jaxp.properties за исключением того, что используется только для поиска фабрик StAX.

Процедура поиска

Фабрики JAXP следуют процедуре, описанной ниже:
  • Используйте системную переменную, как описано в столбце «Системная переменная» в таблице JAXP Factories выше.
  • Используйте файл конфигурации jaxp.properties, как указано в таблице JAXP Factories. Для StAX, если stax.properties существует, фабрики сначала попытаются прочитать его, а не jaxp.properties.

  • Используйте механизм загрузки поставщиков услуг, определённый классом ServiceLoader, для поиска и загрузки реализации сервиса, используя механизм загрузки по умолчанию: механизм загрузки поставщиков услуг будет использовать текущий класс загрузчик контекста потока, чтобы попытаться загрузить сервис. Если загрузчик контекста потока равен null, будет использован загрузчик класса системы.

    SchemaFactory

    В случае с SchemaFactory, каждый потенциальный поставщик услуг должен реализовать метод isSchemaLanguageSupported(String schemaLanguage). Возвращается первый найденный поставщик услуг, поддерживающий указанный язык схемы.

    XPathFactory

    В случае с XPathFactory, каждый потенциальный поставщик услуг должен реализовать метод isObjectModelSupported(String objectModel). Возвращается первый найденный поставщик услуг, поддерживающий указанную модель объекта.
  • В противном случае возвращается реализация system-default, что эквивалентно вызову метода newDefaultInstance() or newDefaultFactory(), как показано в столбце «Системное значение по умолчанию» в таблице JAXP Factories выше.

    SchemaFactory

    В случае с SchemaFactory, должен быть платформенный стандартный SchemaFactory для W3C XML Schema.

    XPathFactory

    В случае с XPathFactory, должен быть платформенный стандартный XPathFactory для W3C DOM, т.е. DEFAULT_OBJECT_MODEL_URI.
Примечание к реализации:

Особенности и свойства, специфичные для реализации

В дополнение к стандартным функциям и свойствам, описанным в публичных API данного модуля, реализация JDK поддерживает ряд дополнительных функций и свойств, специфичных для реализации. В данном разделе описывается соглашение об именовании, системные свойства, файл jaxp.properties, область действия и порядок, а также процессоры, к которым применяется свойство. В конце данного примечания приведена таблица, перечисляющая поддерживаемые реализацией специфичные для реализации функции и свойства.

Соглашение об именовании

Имена функций и свойств полностью квалифицированы и состоят из префикса и имени.

Префикс

Префикс для функций и свойств JDK, а также соответствующих системных свойств (если таковые имеются), определен как:
     jdk.xml.
 

Имя

Имя может состоять из одного или нескольких слов, чувствительных к регистру. Все буквы первого слова написаны строчными, а первая буква каждого последующего слова – заглавной.

Например, свойство, указывающее, является ли XML-документ автономным, будет иметь следующий формат:

     jdk.xml.isStandalone
 
и соответствующее системное свойство:
     jdk.xml.isStandalone
 

Системные свойства

Свойство может иметь соответствующее системное свойство с тем же именем. Системное свойство должно быть установлено до создания процессора и может быть удалено после.

jaxp.properties

Системное свойство может быть указано в файле jaxp.properties для настройки поведения всех вызовов JDK. Формат – system-property-name=value. Например:
     jdk.xml.isStandalone=true
 

Область действия и порядок

Свойство XMLConstants.FEATURE_SECURE_PROCESSING (далее – безопасная обработка) требуется для XML-процессоров, включая DOM, SAX, валидацию схем, XSLT и XPath. Когда безопасная обработка установлена в значение true, применяются функции и свойства, связанные с безопасностью, такие как те, что помечены как "security: yes" (далее – свойства безопасности) в таблице Специфичные для реализации функции и Свойства. Такое применение включает установку свойств и функций безопасности на более ограниченные значения и лимиты, как показано в подстолбце "Value" таблиц. Если же безопасная обработка установлена в значение false, значения свойств не изменяются.

При наличии менеджера безопасности Java безопасная обработка установлена в значение true и не может быть отключена. Поэтому свойства безопасности применяются.

Свойства, указанные в файле jaxp.properties, влияют на все вызовы JDK и переопределяют их значения по умолчанию или значения, установленные при безопасной обработке.

Системные свойства, при установке, влияют на вызовы JDK и переопределяют значения по умолчанию или значения, установленные в jaxp.properties или при безопасной обработке.

Свойства JAXP, заданные через фабрики или процессоры JAXP (например, SAXParser), имеют приоритет перед системными свойствами, файлом jaxp.properties и безопасной обработкой.

Поддержка процессоров

Функции и свойства могут поддерживаться одним или несколькими процессорами. В следующей таблице перечислены процессоры по идентификаторам для использования в качестве справочника.
Процессоры
ID Имя Как установить свойство Как установить функцию
DOM DOM-парсер DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setAttribute(name, value);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature(name, value);
SAX SAX-парсер SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
parser.setProperty(name, value);
SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature(name, value);
StAX StAX-парсер XMLInputFactory xif = XMLInputFactory.newInstance();
xif.setProperty(name, value);
XMLInputFactory xif = XMLInputFactory.newInstance();
xif.setProperty(name, value);
Валидация API валидации XML SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);
schemaFactory.setProperty(name, value);
SchemaFactory schemaFactory = SchemaFactory.newInstance(schemaLanguage);
schemaFactory.setFeature(name, value);
Преобразование API преобразования XML TransformerFactory factory = TransformerFactory.newInstance();
factory.setAttribute(name, value);
TransformerFactory factory = TransformerFactory.newInstance();
factory.setFeature(name, value);
Сериализатор XSLTC Сериализатор XSLTC Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(name, value);
DOMLS Загрузка и сохранение DOM LSSerializer serializer = domImplementation.createLSSerializer();
serializer.getDomConfig().setParameter(name, value);
XPath XPath XPathFactory factory = XPathFactory.newInstance();
factory.setFeature(name, value);

Функции и свойства, специфичные для реализации

Функции и свойства, специфичные для реализации, отражают выбор JDK по управлению ограничениями ресурсов в соответствии со спецификацией API или позволяют приложениям изменять поведение, выходящее за рамки требований стандартов.

В таблице ниже перечислены поддерживаемые реализацией JDK свойства, специфичные для реализации. В будущем могут быть добавлены дополнительные свойства при необходимости.

Реализуемые специфические свойства
Полное имя (префикс + имя) [1] Описание Системное свойство [2] jaxp.properties [2] Значение [3] Безопасность [4] Поддерживаемый процессор [5] С тех пор, как [6]
Тип Значение По умолчанию Принудительное
jdk.xml.entityExpansionLimit Ограничивает количество расширений сущностей. да да Целое число Положительное целое число. Значение, меньшее или равное 0, указывает на отсутствие ограничения. Если значение не является целым числом, выбрасывается исключение NumberFormatException. 64000 64000 Да DOM
SAX
StAX
Проверка
Преобразование
8
jdk.xml.elementAttributeLimit Ограничивает количество атрибутов, которые может иметь элемент. 10000 10000
jdk.xml.maxOccurLimit Ограничивает количество узлов модели содержимого, которые могут быть созданы при построении грамматики для W3C XML Schema, содержащего атрибуты maxOccurs со значениями, отличными от "unbounded". 5000 5000
jdk.xml.totalEntitySizeLimit Ограничивает общий размер всех сущностей, включающих общие и параметрические сущности. Размер рассчитывается как агрегация всех сущностей. 5x10^7 5x10^7
jdk.xml.maxGeneralEntitySizeLimit Ограничивает максимальный размер любых общих сущностей. 0 0
jdk.xml.maxParameterEntitySizeLimit Ограничивает максимальный размер любых параметрических сущностей, включая результат вложенности нескольких параметрических сущностей. 10^6 10^6
jdk.xml.entityReplacementLimit Ограничивает общее количество узлов во всех ссылках на сущности. 3x10^6 3x10^6
jdk.xml.maxElementDepth Ограничивает максимальную глубину элемента. 0 0
jdk.xml.maxXMLNameLimit Ограничивает максимальный размер имен XML, включая имя элемента, имя атрибута и префикс и URI пространства имен. 1000 1000
jdk.xml.isStandalone Указывает, что сериализатор должен рассматривать вывод как автономный документ. Это свойство можно использовать для обеспечения записи новой строки после объявления XML. В отличие от свойства xml-declaration, это свойство не влияет на то, следует ли записывать объявление XML. да да булево true/false false Н/Д Нет DOMLS 17
jdk.xml.xsltcIsStandalone Указывает, что сериализатор XSLTC должен рассматривать вывод как автономный документ. Это свойство можно использовать для обеспечения записи новой строки после объявления XML. В отличие от свойства OMIT_XML_DECLARATION, это свойство не влияет на то, следует ли записывать объявление XML.

Это свойство ведет себя аналогично свойству для DOMLS выше, за исключением того, что оно предназначено для сериализатора XSLTC, а его значение является строкой.

да да Строка да/нет нет Н/Д Нет Сериализатор XSLTC 17
jdk.xml.cdataChunkSize Инструктирует парсер возвращать данные в секции CData в одном блоке, когда свойство равно нулю или не указано, или в нескольких блоках, когда оно больше нуля. Парсер должен разбивать данные по разрывам строк, а любые блоки, которые больше указанного размера, должны быть разбиты на блоки, равные или меньшие этого размера. да да Целое число Положительное целое число. Значение, меньшее или равное 0, указывает на то, что свойство не указано. Если значение не является целым числом, выбрасывается исключение NumberFormatException. 0 Н/Д Нет SAX
StAX
9
jdk.xml.extensionClassLoader Устанавливает экземпляр ClassLoader, не равный null, который будет использоваться для загрузки функций расширения XSLTC java. нет нет Объект Ссылка на объект ClassLoader. Null, если значение не указано. null Н/Д Нет Преобразование 9

В таблице ниже перечислены специфические для реализации функции, в настоящее время поддерживаемые JDK. В будущем могут быть добавлены дополнительные функции, если это необходимо.

Реализуемые специфические функции
Полное имя (префикс + имя) [1] Описание Системное свойство [2] jaxp.properties [2] Значение [3] Безопасность [4] Поддерживаемый процессор [5] С тех пор, как [6]
Тип Значение По умолчанию Принудительное
jdk.xml.enableExtensionFunctions Определяет, разрешены ли функции расширения XSLT и XPath. да да Булево true или false. True указывает, что функции расширения разрешены; False в противном случае. true false Да Преобразование
XPath
8
jdk.xml.overrideDefaultParser Включает использование реализации парсера третьей стороны для переопределения системного парсера по умолчанию для реализаций JDK Transform, Validation и XPath. true или false. True включает использование реализаций парсеров третьей стороны для переопределения системной реализации по умолчанию при выполнении операций XML Transform, Validation или XPath. False отключает использование реализаций парсеров третьей стороны. false false Да Преобразование
Проверка
XPath
9
jdk.xml.resetSymbolTable Инструктирует парсер сбросить свою внутреннюю таблицу символов во время каждой операции разбора. true или false. True указывает, что таблица символов, связанная с парсером, должна быть перераспределена во время каждой операции разбора.
False указывает, что экземпляр таблицы символов парсера должен быть повторно использован во время последующих операций разбора.
false Н/Д Нет SAX 9

[1] Для установки свойства следует использовать полное имя свойства.

[2] Значение "да" указывает, что для свойства существует соответствующее системное свойство, "нет" — в противном случае.

[3] Значение должно быть точно таким, как указано в этой таблице, чувствительно к регистру. Значение соответствующего системного свойства — строковое представление значения свойства. Если тип — булево, системное свойство равно true только если оно "true"; Если тип — строка, системное свойство равно true только если это точно та же строка, представляющая положительное значение (например, "yes" для xsltcIsStandalone); в противном случае системное свойство равно false. Если тип — целое число, значение системного свойства — строковое представление значения (например, "64000" для entityExpansionLimit).

[4] Значение "да" указывает, что свойство является свойством безопасности. Обратитесь к Разделу «Область применения и порядок» для того, как безопасная обработка может повлиять на значение свойства безопасности.

[5] Один или несколько процессоров, которые поддерживают свойство. Значения поля — идентификаторы, описанные в таблице Процессоры.

[6] Указывает первоначальный выпуск, в котором свойство было представлено.

Названия устаревших свойств (устарели)

Выпуски JDK до JDK 17 поддерживают использование префикса в стиле URI для свойств. Эти устаревшие имена свойств устарели начиная с JDK 17 и могут быть удалены в будущих выпусках. Если установлены новые и устаревшие свойства, новые имена свойств имеют приоритет независимо от того, как и где они установлены. Порядок переопределения, как определено в разделе «Область применения и порядок», таким образом, становится, в порядке убывания:
  • Значение по умолчанию;
  • Значение, установленное параметром FEATURE_SECURE_PROCESSING;
  • Значение, установленное в jaxp.properties;
  • Значение, установленное как системная переменная;
  • Значение, установленное на фабриках или процессорах с использованием старых имён свойств;
  • Значение, установленное на фабриках или процессорах с использованием новых имён свойств.

В следующей таблице перечислены свойства и их соответствующие устаревшие имена.

Устаревшие имена свойств (устарело с версии 17)
Свойство Устаревшее имя(а) свойства
jdk.xml.entityExpansionLimit http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit
jdk.xml.elementAttributeLimit http://www.oracle.com/xml/jaxp/properties/elementAttributeLimit
jdk.xml.maxOccurLimit http://www.oracle.com/xml/jaxp/properties/maxOccurLimit
jdk.xml.totalEntitySizeLimit http://www.oracle.com/xml/jaxp/properties/totalEntitySizeLimit
jdk.xml.maxGeneralEntitySizeLimit http://www.oracle.com/xml/jaxp/properties/maxGeneralEntitySizeLimit
jdk.xml.maxParameterEntitySizeLimit http://www.oracle.com/xml/jaxp/properties/maxParameterEntitySizeLimit
jdk.xml.entityReplacementLimit http://www.oracle.com/xml/jaxp/properties/entityReplacementLimit
jdk.xml.maxElementDepth http://www.oracle.com/xml/jaxp/properties/maxElementDepth
jdk.xml.maxXMLNameLimit http://www.oracle.com/xml/jaxp/properties/maxXMLNameLimit
jdk.xml.isStandalone http://www.oracle.com/xml/jaxp/properties/isStandalone
jdk.xml.xsltcIsStandalone http://www.oracle.com/xml/is-standalone
http://www.oracle.com/xml/jaxp/properties/xsltcIsStandalone
jdk.xml.extensionClassLoader jdk.xml.transform.extensionClassLoader
jdk.xml.enableExtensionFunctions http://www.oracle.com/xml/jaxp/properties/enableExtensionFunctions
Граф модулей:
Граф модулей для java.xmlГраф модулей для java.xml
С версии:
9

Пакеты

Пакет Описание
javax.xml
Определяет константы для обработки XML.
javax.xml.catalog
Предоставляет классы для реализации стандарта XML Catalogs OASIS V1.1, 7 октября 2005.
javax.xml.datatype
Определяет сопоставления типов XML/Java.
javax.xml.namespace
Определяет обработку имен пространств XML.
javax.xml.parsers
Предоставляет классы для обработки XML-документов с помощью парсера SAX (Simple API for XML) или билдера DOM (Document Object Model) документа.
javax.xml.stream
Определяет интерфейсы и классы для Streaming API для XML (StAX).
javax.xml.stream.events
Определяет интерфейсы событий для Streaming API для XML (StAX).
javax.xml.stream.util
Предоставляет вспомогательные классы для Streaming API для XML (StAX).
javax.xml.transform
Определяет общие API для обработки инструкций преобразования и выполнения преобразования из исходного в результирующий формат.
javax.xml.transform.dom
Предоставляет классы преобразования, специфичные для DOM.
javax.xml.transform.sax
Предоставляет классы преобразования, специфичные для SAX.
javax.xml.transform.stax
Предоставляет классы преобразования, специфичные для StAX.
javax.xml.transform.stream
Предоставляет классы преобразования, специфичные для потоков и URI.
javax.xml.validation
Предоставляет API для валидации XML-документов.
javax.xml.xpath
Предоставляет нейтральный по отношению к объектной модели API для оценки XPath-выражений и доступа к среде оценки.
org.w3c.dom
Предоставляет интерфейсы для Document Object Model (DOM).
org.w3c.dom.bootstrap
Предоставляет фабрику для получения экземпляров DOMImplementation.
org.w3c.dom.events
Предоставляет интерфейсы для DOM Level 2 Events.
org.w3c.dom.ls
Предоставляет интерфейсы для DOM Level 3 Load and Save.
org.w3c.dom.ranges
Предоставляет интерфейсы для DOM Level 2 Range.
org.w3c.dom.traversal
Предоставляет интерфейсы для DOM Level 2 Traversal.
org.w3c.dom.views
Предоставляет интерфейсы для DOM Level 2 Views.
org.xml.sax
Предоставляет интерфейсы для Simple API for XML (SAX).
org.xml.sax.ext
Предоставляет интерфейсы для SAX2 возможностей, которые конформные SAX драйверы не обязательно поддерживают.
org.xml.sax.helpers
Предоставляет вспомогательные классы, включая поддержку загрузки приложений на основе SAX.

Сервисы

Тип Описание
DatatypeFactory
Фабрика, создающая новые javax.xml.datatype Object объекты, которые отображают XML в/из Java Object.
DocumentBuilderFactory
Определяет API фабрики, которая позволяет приложениям получать парсер, создающий деревья DOM-объектов из XML-документов.
SAXParserFactory
Определяет API фабрики, которая позволяет приложениям настроить и получить SAX-парсер для анализа XML-документов.
SchemaFactory
Фабрика, создающая объекты Schema.
TransformerFactory
Экземпляр TransformerFactory может быть использован для создания Transformer и Templates объектов.
XMLEventFactory
Этот интерфейс определяет утилитарный класс для создания экземпляров XMLEvents
XMLInputFactory
Определяет абстрактную реализацию фабрики для получения потоков.
XMLOutputFactory
Определяет абстрактную реализацию фабрики для получения XMLEventWriters и XMLStreamWriters.
XMLReader
Интерфейс для чтения XML-документа с помощью обратных вызовов.
XPathFactory
Экземпляр XPathFactory может быть использован для создания XPath объектов.

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.xml/module-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API