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

クラスCatalogFeatures

java.lang.Object
javax.xml.catalog.CatalogFeatures

public class CatalogFeatures
extends Object
CatalogFeaturesは、フィーチャとプロパティのコレクションを保持します。
カタログ機能
Feature 説明 プロパティ名 システム・プロパティ[1] jaxp.properties [1] 値[2] ACtion
FILES カタログ・ファイルを見つけるためのURIのセミコロン区切りリスト。 URIは絶対的で、URIスキーム用のURLプロトコル・ハンドラを持っていなければなりません。 javax.xml.catalog.files javax.xml.catalog.files javax.xml.catalog.files String URI 最初のカタログを現在のカタログとして読み取ります。デリゲート・カタログが存在する場合は、現在のカタログに一致するものが見つからない場合は、他のものをロードします。
PREFER パブリックIDとシステムIDの間の優先度を示します。 デフォルト値は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] "N/A"とマークされた機能のSystemプロパティはありません。

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

[3]カタログ仕様では、「prefer属性」の複雑なルールが定義されています。 preferはpublicでもsystemでも構いませんが、実際にはシステムの優先オプションが選択されています。つまり、オプションがあっても常にシステム・エントリが使用されます。 優先権が公開でシステム・エントリが見つからない場合にのみ、公開エントリが検討されます。 したがって、prefer属性をpublic (これはデフォルトです)として設定することをお勧めします。

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

[5]カタログ・ストア全体を共有する場合は、javax.xml.catalog.deferプロパティをfalseに設定して、カタログ全体をリロードできるようにすることが望ましい場合があります。

スコープとオーダー

機能およびプロパティは、カタログ・ファイル、カタログAPI、システム・プロパティ、およびjaxp.propertiesを使用して設定できます。優先順位は同じです。

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

カタログAPIを使用して設定されたプロパティは、システム・プロパティおよび/またはjaxp.propertiesで設定されたプロパティよりも優先されます。 複数のインタフェースの場合は、最新の手順が優先されます。 CatalogFeatures.Feature.FILESでは、CatalogManagerのメソッドで指定されたURIがCatalogFeatures.Builderから入力されたURIを上書きすることを意味します。

設定されたシステム・プロパティは、jaxp.propertiesのプロパティを上書きします。

jaxp.propertiesファイルは通常、Javaインストールのconfディレクトリにあります。 このファイルはJAXP実装によって一度だけ読み込まれ、その値は将来の使用のためにキャッシュされます。 最初の読込み時にファイルが存在しないと、そのあとにその存在がチェックされることはない。 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プロパティのデフォルト値がstrictであるため、一致するエントリが見つからない場合、プロセッサはデフォルトでExceptionをレポートします。

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

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

カタログ・サポートを持つプロセス

カタログ・サポートを持つプロセス
Process カタログ・エントリ型
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 include 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オブジェクトを作成するためのBuilderのインスタンスを返します。
      戻り値:
      ビルダーのインスタンス