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будет реализовывать существующие интерфейсы JAXPEntityResolverиURIResolver. Распознаватель будет поддерживать стандартную инструкцию обработки OASIS как SAXXMLFilter.
Этот JEP также предлагает удалить внутреннюю реализацию распознавателя каталогов после выпуска публичного API.
Новый API будет соответствовать текущей версии спецификации 1.1, которая совместима с OASIS Technical Resolution 9401:1997 (Amendment 2 to TR 9401), на которой был основан внутренний распознаватель каталогов.