- すべてのスーパー・インタフェース:
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
と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はjavax.xml.catalog.resolve
がstrict
として指定されている場合にのみCatalogException
をスローします。 チェックされたExceptionsを処理するアプリケーションでは、カスタム・リゾルバを使用してCatalogResolverをラップするか、Catalog
オブジェクトで実装する必要があります。
- 導入されたバージョン:
- 9
-
メソッドのサマリー
修飾子と型 メソッド 説明 Source
resolve(String href, String base)
URIResolverを実装します。InputSource
resolveEntity(String publicId, String systemId)
EntityResolver
を実装します。InputStream
resolveEntity(String publicId, String systemId, String baseUri, String namespace)
XMLResolver
を実装します。LSInput
resolveResource(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
として指定されている場合
-