Интерфейс CatalogResolver
- Все суперинтерфейсы:
-
EntityResolver,LSResourceResolver,URIResolver,XMLResolver
public interface CatalogResolver extends EntityResolver, XMLResolver, URIResolver, LSResourceResolver
Разрешитель каталога, реализующий SAX EntityResolver, StAX XMLResolver, DOM LS LSResourceResolver, используемые в проверке схем, и Transform URIResolver, и разрешающий внешние ссылки с помощью каталогов.
Стандарт каталогов отличает external identifiers от uri entries как используемые только для идентификации DTD, тогда как uri entries для других ресурсов, таких как таблицы стилей и схемы. Однако Java API, такие как XMLResolver и LSResourceResolver, такого различия не делают. В соответствии с существующим Java API, этот CatalogResolver распознает идентификатор системы как URI и будет искать как system , так и uri записи в каталоге, чтобы найти соответствующую запись.
Поиск начинается в текущем каталоге. Если совпадение найдено, дальнейшие попытки не будут предприниматься. Только если совпадение не найдено в текущем каталоге, будут рассмотрены альтернативные каталоги, включая делегированный и следующий каталоги.
Порядок поиска
Разрешитель сначала будет искать записи системного типа со специфицированнымsystemId. Системные записи включают system, rewriteSystem и systemSuffix записи. Если совпадение не найдено, public записи могут быть просмотрены в соответствии с атрибутом prefer.
Атрибут prefer: если prefer общедоступен, а совпадение не найдено через системные записи, public записи будут рассмотрены. Если не указано, 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
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Source | resolve(String href,
String base) | Реализует URIResolver. |
InputSource | resolveEntity(String publicId,
String systemId) | Реализует |
InputStream | resolveEntity(String publicId,
String systemId,
String baseUri,
String namespace) | Реализует |
LSInput | resolveResource(String type,
String namespaceUri,
String publicId,
String systemId,
String baseUri) | Реализует |
Методы
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 с решенным базой, если база не 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, 2020, 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/11/docs/api/java.xml/javax/xml/catalog/CatalogResolver.html