Интерфейс CatalogResolver
- Все суперинтерфейсы:
-
EntityResolver,LSResourceResolver,URIResolver,XMLResolver
public interface CatalogResolver extends EntityResolver, XMLResolver, URIResolver, LSResourceResolver
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 |
Реализует URIResolver. |
InputSource |
resolveEntity |
Реализует EntityResolver. |
InputStream |
resolveEntity |
Реализует XMLResolver. |
LSInput |
resolveResource |
Реализует 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 - См. также:
resolve
Source resolve(String href, String base)
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