- すべてのスーパー・インタフェース:
EntityResolver,LSResourceResolver,URIResolver,XMLResolver
public interface CatalogResolver extends EntityResolver, XMLResolver, URIResolver, LSResourceResolver
EntityResolver、StAX XMLResolver、Schema Validationで使用されるDOM LS LSResourceResolver、および変換URIResolverを実装し、カタログを使用して外部参照を解決するCatalog Resolver。
「カタログ標準」は、external identifiersとuri entriesをDTDを識別するために使用するものとして区別し、スタイル・シートやスキーマなどの他のリソースについてはuri entriesです。 しかし、XMLResolverやLSResourceResolverのようなJava APIでは、このような区別はありません。 既存のJava APIと一致して、このCatalogResolverはシステム識別子をURIとして認識し、カタログ内のsystemエントリとuriエントリの両方を検索して一致するエントリを検索します。
現在のカタログで検索が開始されます。 一致するものが見つかった場合、これ以上の試みは行われません。 現在のカタログに一致するものがない場合にのみ、代理人および次のカタログを含む代替カタログが検討されます。
検索順序
リゾルバはまず、指定されたsystemIdを持つシステム型のエントリを検索します。 システム・エントリには、system、rewriteSystemおよびsystemSuffixエントリが含まれます。
一致するものが見つからない場合、prefer属性に従ってpublicエントリを検索することができます。
prefer属性: preferがパブリックで、システム・エントリで一致するものが見つからない場合、publicエントリが考慮されます。 指定されていない場合、preferはデフォルトでパブリックになります(OASIS標準では、システム・エントリは常にパブリック・エントリの前に考慮されます)。 publicを優先するとは、システム識別子と公開識別子の両方が指定されたときに公開エントリが照合されることを意味します。 したがって、一般的には、一般公開をお勧めします。)
systemIdとpublic識別子で一致するものが見つからない場合、リゾルバは指定されたsystemIdまたはhrefでuriエントリの検索を続けます。 uriエントリには、uri、rewriteURI、およびuriSuffixエントリが含まれます。
エラー処理
CatalogResolverが次のようなチェック例外を拡張したインタフェース:-
SAXExceptionとIOExceptionEntityResolver.resolveEntity(java.lang.String, java.lang.String)による -
XMLStreamExceptionXMLResolver.resolveEntity(java.lang.String, java.lang.String, java.lang.String, java.lang.String)による -
TransformerExceptionURIResolver.resolve(java.lang.String, java.lang.String)による
ただし、CatalogResolverはjavax.xml.catalog.resolveがstrictとして指定されている場合にのみCatalogExceptionをスローします。 チェックされたExceptionsを処理するアプリケーションでは、カスタム・リゾルバを使用してCatalogResolverをラップするか、Catalogオブジェクトで実装する必要があります。
- 導入されたバージョン:
- 9
-
メソッドのサマリー
修飾子と型 メソッド 説明 Sourceresolve(String href, String base)URIResolverを実装します。InputSourceresolveEntity(String publicId, String systemId)EntityResolverを実装します。InputStreamresolveEntity(String publicId, String systemId, String baseUri, String namespace)XMLResolverを実装します。LSInputresolveResource(String type, String namespaceUri, String publicId, String systemId, String baseUri)LSResourceResolverを実装します。
-
メソッドの詳細
-
resolveEntity
InputSource resolveEntity(String publicId, String systemId)EntityResolverを実装します。 このメソッドは、メイン・カタログと代替カタログのカタログ・エントリを検索して、指定されたpublicIdまたはsystemIdと一致するものを見つけることを試みます。- 定義:
resolveEntity、インタフェース:EntityResolver- パラメータ:
publicId- 参照されている外部エンティティの公開識別子。指定されていない場合はnullsystemId- 外部エンティティのシステム識別子が参照されます。 すべての外部エンティティでシステム識別子が必要です。 XMLにはすべての外部エンティティのシステム識別子が必要なため、この値は常に指定されています。- 戻り値:
- マッピングが見つかった場合は
InputSourceオブジェクト。 マッピングが見つからない場合は、javax.xml.catalog.resolveプロパティがignoreに設定されている場合は空のReaderを含むInputSourceオブジェクトを返します。javax.xml.catalog.resolveプロパティがcontinueに設定されている場合はnullを返します。 - 例外:
CatalogException- マッピングが見つからず、javax.xml.catalog.resolveがstrictとして指定されている場合- 関連項目:
InputSource
-
resolve
URIResolverを実装します。 このメソッドは、メインおよび代替カタログ内のカタログ項目を検索して、指定されたhref属性と一致するものを見つけることを試みます。href属性は文字通り使用され、baseに対して絶対的な試みは行われません。値がURNの場合、
href属性はpublicIdとして認識され、publicエントリの検索に使用されます。 値がURIの場合は、systemIdとみなされ、systemとuriの両方のエントリを検索するために使用されます。- 定義:
- インタフェース
URIResolver内のresolve - パラメータ:
href- スタイル・シートのURIを指定するhref属性。相対的または絶対的なbase- 絶対URIが必要な場合、href属性が絶対になるベースURI- 戻り値:
- マッピングが見つかった場合は
Sourceオブジェクト。 マッピングが見つからない場合は、javax.xml.catalog.resolveプロパティがignoreに設定されている場合は空のSourceオブジェクトを返します。javax.xml.catalog.resolveプロパティがcontinueに設定されている場合、元のURIが(baseがnullでない場合、href、またはhrefがbaseで解決される)のSourceオブジェクトを返します。 - 例外:
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は、カタログ内の一致検索では使用されません。 しかし、XMLソース内の相対systemIdは、baseURIを持つパーサーによって絶対的に作成されている可能性があり、systemエントリを見つけることができません。 そのような場合、systemエントリよりもsystemSuffixエントリが推奨されます。- 定義:
- インタフェース
XMLResolver内のresolveEntity - パラメータ:
publicId- 参照されている外部エンティティの公開識別子。指定されていない場合はnullsystemId- 外部エンティティのシステム識別子が参照されます。 すべての外部エンティティでシステム識別子が必要です。 XMLにはすべての外部エンティティのシステム識別子が必要なため、この値は常に指定されています。baseUri- 絶対ベースURI(CatalogResolverで使用されていない)namespace- 解決するエンティティのネームスペース。CatalogResolverでは使用されません。- 戻り値:
- マッピングが見つかった場合は
InputStreamオブジェクト。マッピングが見つからず、javax.xml.catalog.resolveプロパティがcontinueまたはignoreに設定されている場合はnull。 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エントリを見つけることができません。 そのような場合、systemエントリよりもsystemSuffixエントリが推奨されます。- 定義:
- インタフェース
LSResourceResolver内のresolveResource - パラメータ:
type- 解決されるリソースの型。CatalogResolverでは使用されません。namespaceUri- 解決されるリソースのネームスペース。CatalogResolverでは使用されないpublicId- 参照されている外部エンティティの公開識別子、または公開識別子が指定されていない場合、またはリソースがエンティティでない場合はnull。systemId- システム識別子、参照されている外部リソースのURI参照baseUri- 絶対ベースURI(CatalogResolverで使用されていない)- 戻り値:
- マッピングが見つかった場合は
LSInputオブジェクト。マッピングが見つからず、javax.xml.catalog.resolveプロパティがcontinueまたはignoreに設定されている場合はnull。LSResourceResolverの場合、参照を無視することはできませんので、ignoreはcontinueと同じように扱われます。 - 例外:
CatalogException- マッピングが見つからず、javax.xml.catalog.resolveがstrictとして指定されている場合
-