Интерфейс CatalogResolver
- Все суперинтерфейсы:
-
EntityResolver,LSResourceResolver,URIResolver,XMLResolver
public interface CatalogResolver extends EntityResolver, XMLResolver, URIResolver, LSResourceResolver
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 |
Реализует 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, 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