Spec-Zone.ru › OpenJDK 21

Интерфейс CatalogResolver

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

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

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

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

Резолвер сначала ищет записи типа "system" с указанным systemId. Записи типа "system" включают system, rewriteSystem и systemSuffix записи.

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

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

Если совпадение не найдено с идентификаторами 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

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

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

Spec-Zone.ru

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