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