モジュール 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標準では、システム・エントリは常にパブリック・エントリの前に考慮されます)。 Prefer publicは、システム識別子とパブリック識別子の両方が指定されている場合にパブリック・エントリが一致することを意味します。 一般的にはpublicが推奨されます)。

    systemIdおよびpublic識別子と一致するものが見つからない場合、リゾルバは、指定されたsystemIdまたはhrefを持つuriエントリの検索を続行します。 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として指定されている場合
        関連項目:
        InputSource
      • resolve

        Source resolve​(String href,
                       String base)
        URIResolverを実装します。 このメソッドは、メイン・カタログおよび代替カタログのカタログ・エントリを検索し、指定されたhref属性との一致を検出しようとします。 href属性は文字通り使用され、baseに対して絶対的な指定は行われません。

        値がURNの場合、href属性はpublicIdとして認識され、publicエントリの検索に使用されます。 値がURIの場合、systemIdとみなされ、systemエントリとuriエントリの両方の検索に使用されます。

        定義:
        インタフェースURIResolverresolve
        パラメータ:
        href - スタイル・シートのURIを指定するhref属性(相対または絶対)
        base - 絶対URIが必要な場合にhref属性が絶対になるベースURI
        戻り値:
        マッピングが見つかった場合は、Sourceオブジェクト。 マッピングが見つからない場合は、javax.xml.catalog.resolveプロパティがignoreに設定されている場合、空のSourceオブジェクトを返します。javax.xml.catalog.resolveプロパティがcontinueに設定されている場合、元のURI (hrefまたはbaseがnullでない場合はbaseで解決されたhref)を持つSourceオブジェクトを返します。
        例外:
        CatalogException - マッピングが見つからず、javax.xml.catalog.resolvestrictとして指定されている場合
      • 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エントリをお薦めします。

        定義:
        インタフェースXMLResolverresolveEntity
        パラメータ:
        publicId - 参照される外部エンティティの公開識別子。何も指定されていない場合はnull
        systemId - 参照される外部エンティティのシステム識別子。 システム識別子は、すべての外部エンティティで必要です。 XMLでは、すべての外部エンティティにシステム識別子が必要なため、この値は常に指定されます。
        baseUri - CatalogResolverで使用されていない絶対ベースURI
        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を実装します。 publicIdおよびsystemIdを解決する目的で、このメソッドはresolveEntity(java.lang.String, java.lang.String)と同等です。

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

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