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

クラスCatalogFeatures


  • public class CatalogFeatures
    extends Object
    CatalogFeaturesは、機能およびプロパティのコレクションを保持します。
    カタログ機能
    機能 説明 プロパティ名 システム・プロパティ[1] jaxp.properties[1] 値[2] アクション
    FILES カタログ・ファイルを検索するためのURIのセミコロン区切りリスト。 URIは絶対で、URIスキームのURLプロトコル・ハンドラを持っている必要があります。 javax.xml.catalog.files javax.xml.catalog.files javax.xml.catalog.files String URI 最初のカタログを現在のカタログとして読み込みます。現在のカタログで一致が見つからなかった場合は、他のカタログをロードします。
    PREFER パブリック識別子とシステム識別子のプリファレンスを示します。 デフォルト値はpublic [3]です。 javax.xml.catalog.prefer 該当なし 該当なし String system システム・エントリで一致を検索します。外部識別子で公開識別子のみが指定されている場合、公開エントリを検索します。
    public 一致するシステム・エントリを検索します。一致するシステム・エントリがない場合はパブリック・エントリを検索します。
    DEFER 委任エントリまたはnextCatalogで指定された代替カタログは、必要になるまで読み取られないことを示します。 デフォルト値はtrueです。 javax.xml.catalog.defer[4] javax.xml.catalog.defer javax.xml.catalog.defer String true 必要に応じて代替カタログをロードします。
    false すべてのカタログをロードします[5]。
    RESOLVE 指定したすべてのカタログを使い果たした後、一致するエントリが見つからない場合にアクションを決定します。 デフォルトはstrictです。 javax.xml.catalog.resolve[4] javax.xml.catalog.resolve javax.xml.catalog.resolve String strict 一致がない場合はCatalogExceptionをスローします。
    continue 一致がないかのようにXMLパーサーを続行できます。
    ignore 一致がない場合は、外部参照をスキップするようにXMLパーサーに指示します。

    [1]「該当なし」とマークされた機能のシステム・プロパティはありません。

    [2]値は、大文字と小文字を区別して、この表に記載されているとおりにしてください。 値を指定しないと、IllegalArgumentExceptionになります。

    [3]カタログ仕様では、prefer属性に複合ルールが定義されています。 優先はpublicまたはsystemにできますが、仕様によってシステムは実際には優先オプションにされました。つまり、オプションに関係なく、見つかった場合は常にシステム・エントリが使用されます。 パブリックエントリは、publicであり、システムエントリが見つからない場合にのみ考慮されます。 したがって、prefer属性をpublic (デフォルト)として設定することをお薦めします。

    [4] OASISカタログ仕様の非標準属性ですが、deferおよびresolveは、JavaカタログAPIによって、メイン・カタログのカタログ・エントリの属性としてpreferと同じように認識されます。 メイン・カタログ・ファイルのカタログ・エントリに指定された属性のみが使用されます。

    [5]カタログ・ストア全体を共有する場合は、カタログ全体を事前ロードできるように、プロパティjavax.xml.catalog.deferをfalseに設定することをお薦めします。

    スコープと順序

    機能およびプロパティは、カタログ・ファイル、カタログAPI、システム・プロパティおよびjaxp.propertiesを介して設定でき、プリファレンスは同じ順序になります。

    カタログおよびグループ・エントリのカタログ・ファイルで属性として指定されるプロパティは、他の設定よりも優先されます。 たとえば、カタログ・ファイルで<catalog prefer="public">のようにprefer属性が設定されている場合、「prefer」プロパティに対するその他の入力は不要であるか、無視されます。

    カタログAPIで設定されたプロパティは、システム・プロパティまたはjaxp.properties(あるいはその両方)で設定されたプロパティをオーバーライドします。 複数のインターフェイスの場合は、手順の最新の方が優先されます。 CatalogFeatures.Feature.FILESの場合、これは、CatalogManagerのメソッドで指定されたURIが、CatalogFeatures.Builderを介して入力されたURIをオーバーライドすることを意味します。

    設定した場合のシステム・プロパティは、jaxp.propertiesのシステム・プロパティをオーバーライドします。

    jaxp.propertiesファイルは、通常、Javaインストールのconfディレクトリにあります。 ファイルはJAXP実装によって1回のみ読み取られ、その値は将来の使用のためにキャッシュされます。 最初の読込み時にファイルが存在しないと、そのあとにその存在がチェックされることはない。 jaxp.propertiesの読取り後にプロパティの値を変更することはできません。

    CatalogFeaturesインスタンスは、次のサンプル・コードに示すように、そのビルダーを使用して作成できます。

    
                    CatalogFeatures f = CatalogFeatures.builder()
                            .with(Feature.FILES, "file:///etc/xml/catalog")
                            .with(Feature.PREFER, "public")
                            .with(Feature.DEFER, "true")
                            .with(Feature.RESOLVE, "ignore")
                            .build();
     

    JAXP XMLプロセッサのサポート

    カタログ機能は、SAXおよびDOM (javax.xml.parsers)、StAXパーサー(javax.xml.stream)、スキーマ検証(javax.xml.validation)、XML変換(javax.xml.transform)など、JAXPプロセッサ全体でサポートされます。 前述の機能は、setPropertyまたはsetAttributeインタフェースを定義するJAXPファクトリまたはプロセッサを介して設定できます。 たとえば、次のコード・スニペットは、javax.xml.catalog.filesプロパティを使用して、SAXパーサーのカタログ・ファイルにURIを設定します。
    
          SAXParserFactory spf = SAXParserFactory.newInstance();
          spf.setFeature(XMLConstants.USE_CATALOG, true); [1]
          SAXParser parser = spf.newSAXParser();
          parser.setProperty(CatalogFeatures.Feature.FILES.getPropertyName(), "file:///etc/xml/catalog");
     

    [1] USE_CATALOGのデフォルト値がtrueであるため、このステートメントは必要ありません。

    JAXPプロセッサのカタログに対するサポートは、USE_CATALOG機能と有効なカタログ・ファイルの両方に依存します。 JAXPプロセッサは、機能がtrueで、有効なカタログ・ファイルがjavax.xml.catalog.filesプロパティによって指定されている場合にのみカタログを使用します。 USE_CATALOGがfalseに設定されている場合、またはカタログ・ファイルが指定されていない場合、カタログの使用は試行されません。

    JAXPプロセッサは、CatalogFeaturesのデフォルト設定を監視します。 たとえば、javax.xml.catalog.resolveプロパティのデフォルト値は厳密であるため、一致するエントリが見つからない場合、プロセッサはデフォルトで例外を報告します。

    JAXPプロセッサは、ユーザー指定のカスタム・リゾルバを優先します。 そのようなリゾルバが登録されている場合は、CatalogResolver上で使用されます。 ただし、nullが返された場合、プロセッサはCatalogResolverを使用して解決を続行します。 空のソースが返された場合、CatalogResolverでは試行されません。

    カタログ・サポートは、リゾルバをサポートするJAXPライブラリ内の任意のプロセスで使用できます。 次の表に、このようなすべてのプロセスを示します。

    カタログ・サポートによるプロセス

    カタログ・サポートによるプロセス
    プロセス カタログ入力タイプ
    DTDと外部エンティティ パブリック、システム
       The following DTD reference:
       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
       Can be resolved using the following Catalog entry:
       <public publicId="-//W3C//DTD XHTML 1.0 Strict//EN" uri="catalog/xhtml1-strict.dtd"/>
       or
       <systemSuffix systemIdSuffix="html1-strict.dtd" uri="catalog/xhtml1-strict.dtd"/>
     
    XInclude uri
       The following XInclude element:
       <xi:include href="http://openjdk.java.net/xml/disclaimer.xml"/>
    
       can be resolved using a URI entry:
       <uri name="http://openjdk.java.net/xml/disclaimer.xml" uri="file:///pathto/local/disclaimer.xml"/>
       or
       <uriSuffix uriSuffix="disclaimer.xml" uri="file:///pathto/local/disclaimer.xml"/>
     
    XSDインポート uri
       The following import element:
        <xsd:import namespace="http://openjdk.java.net/xsd/XSDImport_person"
                    schemaLocation="http://openjdk.java.net/xsd/XSDImport_person.xsd"/>
    
       can be resolved using a URI entry:
       <uri name="http://openjdk.java.net/xsd/XSDImport_person.xsd" uri="file:///pathto/local/XSDImport_person.xsd"/>
       or
       <uriSuffix uriSuffix="XSDImport_person.xsd" uri="file:///pathto/local/XSDImport_person.xsd"/>
       or
       <uriSuffix uriSuffix="http://openjdk.java.net/xsd/XSDImport_person" uri="file:///pathto/local/XSDImport_person.xsd"/>
     
    XSDインクルード uri
       The following include element:
       <xsd:include schemaLocation="http://openjdk.java.net/xsd/XSDInclude_person.xsd"/>
    
       can be resolved using a URI entry:
       <uri name="http://openjdk.java.net/xsd/XSDInclude_person.xsd" uri="file:///pathto/local/XSDInclude_person.xsd"/>
       or
       <uriSuffix uriSuffix="XSDInclude_person.xsd" uri="file:///pathto/local/XSDInclude_person.xsd"/>
     
    XSLインポートおよびインクルード uri
       The following include element:
       <xsl:include href="http://openjdk.java.net/xsl/include.xsl"/>
    
       can be resolved using a URI entry:
       <uri name="http://openjdk.java.net/xsl/include.xsl" uri="file:///pathto/local/include.xsl"/>
       or
       <uriSuffix uriSuffix="include.xsl" uri="file:///pathto/local/include.xsl"/>
     
    XSL文書関数 uri
       The document in the following element:
       <xsl:variable name="dummy" select="document('http://openjdk.java.net/xsl/list.xml')"/>
    
       can be resolved using a URI entry:
       <uri name="http://openjdk.java.net/xsl/list.xml" uri="file:///pathto/local/list.xml"/>
       or
       <uriSuffix uriSuffix="list.xml" uri="file:///pathto/local/list.xml"/>
     
    導入されたバージョン:
    9
    • メソッドの詳細

      • defaults

        public static CatalogFeatures defaults()
        デフォルト設定でCatalogFeaturesインスタンスを返します。
        戻り値:
        デフォルトのCatalogFeaturesインスタンス
      • get

        public String get​(CatalogFeatures.Feature cf)
        指定されたフィーチャの値を返します。
        パラメータ:
        cf - カタログ機能のタイプ
        戻り値:
        機能の値
      • builder

        public static CatalogFeatures.Builder builder()
        CatalogFeaturesオブジェクトを作成するためのビルダーのインスタンスを返します。
        戻り値:
        ビルダーのインスタンス