Spec-Zone.ru › OpenJDK 17

Интерфейс CatalogResolver

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

Стандарт каталогов Catalog Standard различает 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, записи типа "система" всегда рассматриваются перед записями типа "публично". Приоритет "публично" означает, что записи типа "публично" будут сопоставлены, если указаны и идентификаторы "система", и "публично". Поэтому рекомендуется отдавать предпочтение "публично").

Если совпадение не найдено с идентификаторами "система" и "публично", резолвер продолжит поиск записей типа 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

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

Модификатор и тип Метод Описание
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 не 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, 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/javax/xml/catalog/CatalogResolver.html

Spec-Zone.ru

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