- すべてのスーパー・インタフェース:
EntityResolver
,LSResourceResolver
,URIResolver
,XMLResolver
EntityResolver
、StAX XMLResolver
、スキーマ検証で使用されるDOM LS LSResourceResolver
、および変換URIResolver
を実装し、カタログを使用して外部参照を解決します。
「カタログ標準」は、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標準では、システム・エントリは常にパブリック・エントリの前に考慮されます)。 パブリックを優先することは、システム識別子とパブリック識別子の両方が指定されている場合にパブリック・エントリが一致することを意味します。 一般的には、一般の方におすすめです)
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
をスローします。 チェックされた例外を処理する予定のアプリケーションの場合、カスタム・リゾルバを使用してCatalogResolverをラップするか、Catalog
オブジェクトで実装する必要があります。
- 導入されたバージョン:
- 9
-
ネストされたクラスのサマリー
修飾子と型インタフェース説明static enum
外部参照を解決できない場合にCatalogResolverが実行するアクションを定義します。 -
メソッドのサマリー
修飾子と型メソッド説明URIResolverを実装します。resolveEntity
(String publicId, String systemId) EntityResolver
を実装します。resolveEntity
(String publicId, String systemId, String baseUri, String namespace) XMLResolver
を実装します。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
として指定されている場合- 関連項目:
-
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
として指定されている場合
-