openjdk.ruOpenJDK на русском

JEP 268: XML Catalogs

Каталоги XML

ОтветственныйJoe Wang
ТипFeature
ОбластьSE
СтатусClosed / Delivered
Выпуск9
Компонентxml / jaxp
Обсуждениеcore dash libs dash dev at openjdk dot java dot net
ТрудоёмкостьS
ДлительностьM
РецензентыBrian Goetz, Mandy Chung
ОдобренBrian Goetz
Создан2013/08/26 15:52
Обновлён2019/04/08 21:16
Задача8023732

Аннотация

Разработать стандартный API для каталогов XML с поддержкой стандарта OASIS XML Catalogs версии 1.1. API определит абстракции каталога и распознавателя каталога (catalog resolver), которые можно будет использовать с процессорами JAXP, принимающими распознаватели.

Что не является целью

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

Мотивация

Каталоги XML полезны при разрешении внешних ссылок в XML/XSD/XSL: с ними не нужно многократно загружать внешние ресурсы. В некоторых случаях каталог XML необходим, чтобы приложения правильно работали в локальных средах, где источник импортируемого ресурса XML отличается от исходного.

Каталоги XML также могут повысить безопасность приложений: удалённые внешние ссылки перенаправляются в локальный каталог, а загрузка внешних ресурсов после этого запрещается.

Внутренний распознаватель каталогов входит в JDK начиная с JDK 6. Из-за отсутствия публичного API внешние библиотеки и приложения использовали его или ссылались на него напрямую. Кроме того, он поставлялся в репозитории Maven и использовался такими приложениями, как JAX-WS/JAXB (см., например, com.sun.xml.ws.util.xml.XmlUtil). Нужен стандартный API, чтобы эту возможность действительно можно было поддерживать.

Описание

API для каталогов XML определит следующие интерфейсы в соответствии со стандартом OASIS XML Catalogs версии 1.1. Он будет напрямую поддерживать основные возможности стандарта каталогов и реализовывать интерфейсы EntityResolver и URIResolver:

  • CatalogManager будет управлять созданием каталогов XML и объектов CatalogResolver, а также возможностями и свойствами.

  • Catalog будет реализовывать семантику файлов OASIS Open Catalog. Он определит каталог сущностей, который отображает внешние идентификаторы и ссылки URI на (другие) ссылки URI и делегирует обработку другим каталогам.

  • CatalogResolver будет реализовывать существующие интерфейсы JAXP EntityResolver и URIResolver. Распознаватель будет поддерживать стандартную инструкцию обработки OASIS как SAX XMLFilter.

Этот JEP также предлагает удалить внутреннюю реализацию распознавателя каталогов после выпуска публичного API.

Новый API будет соответствовать текущей версии спецификации 1.1, которая совместима с OASIS Technical Resolution 9401:1997 (Amendment 2 to TR 9401), на которой был основан внутренний распознаватель каталогов.