モジュール java.xml
パッケージ javax.xml.catalog

インタフェースCatalogResolver

すべてのスーパー・インタフェース:
EntityResolver, LSResourceResolver, URIResolver, XMLResolver

public interface CatalogResolver extends EntityResolver, XMLResolver, URIResolver, LSResourceResolver
カタログ・リゾルバ。SAX EntityResolver、StAX XMLResolver、スキーマ検証で使用されるDOM LS LSResourceResolver、および変換URIResolverを実装し、カタログを使用して外部参照を解決します。

「カタログ標準」は、external identifiersuri entriesを、DTDのみを識別するために使用されるものと区別し、uri entriesは、スタイル・シートやスキーマなどの他のリソースを示します。 ただし、XMLResolverLSResourceResolverなどのJava APIは区別されません。 既存のJava APIと一貫して、このCatalogResolverはシステム識別子をURIとして認識し、一致するエントリを見つけるためにカタログ内のsystemエントリとuriエントリの両方を検索します。

検索は現在のカタログで開始されます。 一致が見つかった場合、それ以上の試行は行われません。 現在のカタログに一致がない場合のみ、代理カタログおよび次のカタログを含む代替カタログが考慮されます。

オーダーの検索

リゾルバはまず、指定されたsystemIdを持つシステム型のエントリを検索します。 システム・エントリには、systemrewriteSystemおよびsystemSuffixエントリが含まれます。

一致が見つからない場合は、prefer属性に従ってpublicエントリを検索できます。

prefer属性: preferがパブリックで、システム・エントリで一致が見つからない場合は、publicエントリが考慮されます。 指定しない場合、preferはデフォルトでパブリックになります(OASIS標準では、システム・エントリは常にパブリック・エントリの前に考慮されます)。 パブリックを優先することは、システム識別子とパブリック識別子の両方が指定されている場合にパブリック・エントリが一致することを意味します。 一般的には、一般の方におすすめです)

systemIdおよびpublic識別子と一致するものが見つからない場合、リゾルバは、指定されたsystemIdまたはhrefuriエントリの検索を続行します。 uriエントリには、urirewriteURIおよびuriSuffixエントリが含まれます。

エラー処理

CatalogResolverが指定したチェック例外を拡張するインタフェース。次のものが含まれます:

ただし、CatalogResolverは、javax.xml.catalog.resolvestrictとして指定されている場合にのみCatalogExceptionをスローします。 チェックされた例外を処理する予定のアプリケーションの場合、カスタム・リゾルバを使用してCatalogResolverをラップするか、Catalogオブジェクトで実装する必要があります。

導入されたバージョン:
9
  • メソッドの詳細

    • resolveEntity

      InputSource resolveEntity(String publicId, String systemId)
      EntityResolverを実装します。 このメソッドは、メイン・カタログおよび代替カタログのカタログ・エントリを検索し、指定されたpublicIdまたはsystemIdと一致するものを検索します。
      定義:
      resolveEntity、インタフェースEntityResolver
      パラメータ:
      publicId - 参照されている外部エンティティの公開識別子。指定されていない場合はnull
      systemId - 参照される外部エンティティのシステム識別子。 システム識別子は、すべての外部エンティティに必要です。 XMLにはすべての外部エンティティのシステム識別子が必要なため、この値は常に指定されます。
      戻り値:
      マッピングが見つかった場合は、InputSourceオブジェクト。 マッピングが見つからない場合は、javax.xml.catalog.resolveプロパティがignoreに設定されている場合、空のReaderを含むInputSourceオブジェクトを返します。javax.xml.catalog.resolveプロパティがcontinueに設定されている場合、nullを返します。
      例外:
      CatalogException - マッピングが見つからず、javax.xml.catalog.resolvestrictとして指定されている場合
      関連項目:
    • resolve

      Source resolve(String href, String base)
      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.resolvestrictとして指定されている場合
    • resolveEntity

      InputStream resolveEntity(String publicId, String systemId, String baseUri, String namespace)
      XMLResolverを実装します。 publicIdsystemIdを解決する目的で、このメソッドはresolveEntity(java.lang.String, java.lang.String)と同等です。

      systemIdは文字どおりに使用され、baseUriに対して絶対的な試行は行われません。 baseUriおよびnamespaceは、カタログ内の一致の検索では使用されません。 ただし、xmlソース内の相対systemIdは、baseURIを持つパーサーによって絶対的に作成されているため、systemエントリを見つけることができません。 このような場合は、systemエントリよりもsystemSuffixエントリをお薦めします。

      定義:
      インタフェースXMLResolver内のresolveEntity
      パラメータ:
      publicId - 参照されている外部エンティティの公開識別子。指定されていない場合はnull
      systemId - 参照される外部エンティティのシステム識別子。 システム識別子は、すべての外部エンティティに必要です。 XMLにはすべての外部エンティティのシステム識別子が必要なため、この値は常に指定されます。
      baseUri - 絶対ベースURI。CatalogResolverでは使用されません
      namespace - 解決するエンティティのネームスペース。CatalogResolverでは使用されません。
      戻り値:
      マッピングが見つかった場合はInputStreamオブジェクト。マッピングが見つからず、javax.xml.catalog.resolveプロパティがcontinueまたはignoreに設定されている場合はnull。 XMLResolverでは、参照を無視できないため、ignorecontinueと同じように扱われます。
      例外:
      CatalogException - マッピングが見つからず、javax.xml.catalog.resolvestrictとして指定されている場合
    • resolveResource

      LSInput resolveResource(String type, String namespaceUri, String publicId, String systemId, String baseUri)
      LSResourceResolverを実装します。 publicIdsystemIdを解決する目的で、このメソッドはresolveEntity(java.lang.String, java.lang.String)と同等です。

      systemIdは文字どおりに使用され、baseUriに対して絶対的な試行は行われません。 baseUrinamespaceUriおよび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では、参照を無視できないため、ignorecontinueと同じように扱われます。
      例外:
      CatalogException - マッピングが見つからず、javax.xml.catalog.resolvestrictとして指定されている場合