Spec-Zone.ru › OpenJDK 24

Интерфейс CatalogResolver

Все суперинтерфейсы:
EntityResolver, LSResourceResolver, URIResolver, XMLResolver
public interface CatalogResolver extends EntityResolver, XMLResolver, URIResolver, LSResourceResolver
Разрешитель каталогов, реализующий SAX EntityResolver, StAX XMLResolver, DOM LS LSResourceResolver, используемые в валидации схем и преобразовании URIResolver, и разрешающий внешние ссылки с помощью каталогов.

Стандарт каталогов отличает external identifiers от uri entries как используемые исключительно для идентификации DTD, в то время как uri entries используется для других ресурсов, таких как стили и схемы. Однако Java API, такие как XMLResolver и LSResourceResolver, не делают такого различия. В соответствии с существующим Java API, этот CatalogResolver распознаёт идентификатор системы как URI и будет искать как system, так и uri записи в каталоге, чтобы найти соответствующую запись.

Поиск начинается в текущем каталоге. Если совпадение найдено, дальнейшие попытки не предпринимаются. Только если совпадения нет в текущем каталоге, рассматриваются альтернативные каталоги, включая делегированные и следующие.

Порядок поиска

Разрешитель сначала ищет записи типа «система» с указанным systemId. К записям типа «система» относятся system, rewriteSystem и systemSuffix записи.

Если совпадение не найдено, могут быть обработаны записи типа «общедоступный» в соответствии с атрибутом prefer.

Атрибут prefer: если prefer является общедоступным, и совпадение не найдено среди записей типа «система», будут рассмотрены записи типа «общедоступный». Если он не указан, prefer по умолчанию является общедоступным (Обратите внимание, что согласно стандарту OASIS, записи типа «система» всегда рассматриваются перед записями типа «общедоступный». Предпочтение общедоступным означает, что записи типа «общедоступный» будут сопоставлены, когда указаны и идентификаторы типа «система», и типа «общедоступный». Таким образом, рекомендуется отдавать предпочтение общедоступным.)

Если совпадение не найдено с systemId и public идентификаторами, разрешитель продолжит поиск записей типа «uri» с указанным systemId или href. Записи типа «uri» включают uri, rewriteURI и uriSuffix записи.

Обработка ошибок

Интерфейсы, которые расширяет CatalogResolver, определяют проверяемые исключения, включая:
  • SAXException и IOException методом EntityResolver.resolveEntity(java.lang.String, java.lang.String)
  • XMLStreamException методом XMLResolver.resolveEntity(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
  • TransformerException методом URIResolver.resolve(java.lang.String, java.lang.String)

Однако CatalogResolver будет выбрасывать CatalogException только когда javax.xml.catalog.resolve указан как strict. Приложениям, ожидающим обработку проверяемых исключений, может потребоваться использовать пользовательский разрешитель для обертывания CatalogResolver или реализовать его с объектом Catalog.

С:
9

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static enum  CatalogResolver.NotFoundAction
Определяет действия, которые CatalogResolver может предпринять, когда он не может разрешить внешнюю ссылку.

Краткое описание методов

Модификатор и тип Метод Описание
Source resolve(String href, String base)
Реализует URIResolver.
InputSource resolveEntity(String publicId, String systemId)
Реализует EntityResolver.
InputStream resolveEntity(String publicId, String systemId, String baseUri, String namespace)
Реализует XMLResolver.
LSInput resolveResource(String type, String namespaceUri, String publicId, String systemId, String baseUri)
Реализует LSResourceResolver.

Подробности методов

resolveEntity

InputSource resolveEntity(String publicId, String systemId)
Реализует EntityResolver. Метод ищет в записях каталога в основных и альтернативных каталогах соответствие указанному publicId или systemId.
Указано:
resolveEntity в интерфейсе EntityResolver
Параметры:
publicId — общественный идентификатор внешнего сущности, на которую ссылаются, или null, если не было предоставлено
systemId — системный идентификатор внешней сущности, на которую ссылаются. Системный идентификатор требуется для всех внешних сущностей. XML требует системного идентификатора для всех внешних сущностей, поэтому это значение всегда указано.
Возвращает:
объект InputSource, если соответствие найдено. Если соответствие не найдено, возвращает объект InputSource содержащий пустой Reader, если свойство javax.xml.catalog.resolve установлено в ignore; возвращает null, если свойство javax.xml.catalog.resolve установлено в continue.
Вызывает:
CatalogException — если соответствие не найдено и javax.xml.catalog.resolve задано как strict
См. также:
  • InputSource

resolve

Source resolve(String href, String base)
Реализует URIResolver. Метод ищет в записях каталога в основных и альтернативных каталогах соответствие указанному атрибуту href. Атрибут href будет использован буквально, без попытки сделать его абсолютным относительно base.

Если значение является URN, атрибут href распознаётся как publicId и используется для поиска записей public. Если значение является URI, оно воспринимается как systemId и используется для поиска записей в system и uri.

Указано:
resolve в интерфейсе URIResolver
Параметры:
href — атрибут href, который указывает URI таблицы стилей, который может быть относительным или абсолютным
base — базовый URI, относительно которого атрибут href будет сделан абсолютным, если это требуется для абсолютного URI
Возвращает:
объект Source, если соответствие найдено. Если соответствие не найдено, возвращает пустой объект Source, если свойство javax.xml.catalog.resolve установлено в ignore; возвращает объект Source с исходным URI (href, или href, разрешенный с помощью base, если base не null), если свойство javax.xml.catalog.resolve установлено в continue.
Вызывает:
CatalogException — если соответствие не найдено и javax.xml.catalog.resolve задано как strict

resolveEntity

InputStream resolveEntity(String publicId, String systemId, String baseUri, String namespace)
Реализует XMLResolver. Для целей разрешения publicId и systemId, этот метод эквивалентен resolveEntity(java.lang.String, java.lang.String).

systemId будет использован буквально, без попытки сделать его абсолютным относительно baseUri. baseUri и namespace не используются при поиске соответствия в каталоге. Однако относительный systemId в исходном xml может быть сделан абсолютным парсером с помощью baseURI, что затруднит поиск записи system. В таком случае рекомендуется запись типа systemSuffix вместо записи типа system.

Указано:
resolveEntity в интерфейсе XMLResolver
Параметры:
publicId — общественный идентификатор внешней сущности, на которую ссылаются, или null, если не был предоставлен
systemId — системный идентификатор внешней сущности, на которую ссылаются. Системный идентификатор требуется для всех внешних сущностей. XML требует системного идентификатора для всех внешних сущностей, поэтому это значение всегда указано.
baseUri — абсолютный базовый URI, не используется CatalogResolver
namespace — пространство имён сущности для разрешения, не используется CatalogResolver.
Возвращает:
объект InputStream, если соответствие найдено; null, если соответствие не найдено и свойство javax.xml.catalog.resolve установлено в continue или ignore. Обратите внимание, что для XMLResolver не возможно игнорировать ссылку, поэтому ignore обрабатывается так же, как и continue.
Вызывает:
CatalogException — если соответствие не найдено и javax.xml.catalog.resolve задано как strict

resolveResource

LSInput resolveResource(String type, String namespaceUri, String publicId, String systemId, String baseUri)
Реализует LSResourceResolver. Для целей разрешения publicId и systemId, этот метод эквивалентен resolveEntity(java.lang.String, java.lang.String).

systemId будет использован буквально, без попытки сделать его абсолютным относительно baseUri. baseUri, namespaceUri и type не используются при поиске соответствия в каталоге. Однако относительный systemId в источнике может быть сделан абсолютным парсером с помощью baseURI, что затруднит поиск записи system. В таком случае рекомендуется запись типа systemSuffix вместо записи типа system.

Указано:
resolveResource в интерфейсе LSResourceResolver
Параметры:
type — тип ресурса, который разрешается, не используется CatalogResolver
namespaceUri — пространство имён ресурса, который разрешается, не используется CatalogResolver
publicId — общественный идентификатор внешней сущности, на которую ссылаются, или null, если общественный идентификатор не был предоставлен или ресурс не является сущностью.
systemId — системный идентификатор, ссылка URI на внешний ресурс, на который ссылаются
baseUri — абсолютный базовый URI, не используется CatalogResolver
Возвращает:
объект LSInput, если соответствие найдено; null, если соответствие не найдено и свойство javax.xml.catalog.resolve установлено в continue или ignore. Обратите внимание, что для LSResourceResolver, не возможно игнорировать ссылку, поэтому ignore обрабатывается так же, как и continue.
Вызывает:
CatalogException — если соответствие не найдено и javax.xml.catalog.resolve задано как strict

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.xml/javax/xml/catalog/CatalogResolver.html

Spec-Zone.ru

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