XMLカタログAPIのインタフェース

XMLカタログAPIにアクセスするは、XMLカタログAPIのインタフェースを使用します。

XMLカタログAPIのインタフェース

XMLカタログAPIでは、次のインタフェースが定義されています。

  • Catalogインタフェースは、XMLカタログ、OASIS標準V1.1 (2005年10月7日)で定義されているとおり、エンティティ・カタログを表します。Catalogオブジェクトは不変です。Catalogオブジェクトを作成したら、これを使用してsystempublic、またはuriエントリ内の一致を探します。カスタム・リゾルバを実装すると、カタログを使用してローカル・リソースを検索するのが便利であることがわかります。

  • CatalogFeaturesクラスには、javax.xml.catalog.filesjavax.xml.catalog.deferjavax.xml.catalog.prefer、およびjavax.xml.catalog.resolveなどの、カタログAPIがサポートする機能とプロパティが保持されています。

  • CatalogManagerクラスは、XMLカタログおよびカタログ・リゾルバの作成を管理します。

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

CatalogFeaturesクラスの詳細

カタログ機能はCatalogFeaturesクラスにまとめて定義されています。機能はAPIレベルとシステム・レベルで定義されており、API、システム・プロパティおよびJAXPプロパティを使用して設定できます。APIを使用して機能を設定するには、CatalogFeaturesクラスを使用します。

次のコードでは、javax.xml.catalog.resolvecontinueに設定されるため、CatalogResolverによって一致が見つからなくても処理は続行します:

CatalogFeatures f = CatalogFeatures.builder().with(Feature.RESOLVE, "continue").build();

このcontinue機能をシステム全体に設定するには、JavaコマンドラインまたはSystem.setPropertyメソッドを使用します:

System.setProperty(Feature.RESOLVE.getPropertyName(), "continue");

このcontinue機能をJVMインスタンス全体に設定するには、jaxp.propertiesファイルに次の行を入力します:

javax.xml.catalog.resolve = "continue"

jaxp.propertiesファイルは通常、$JAVA_HOME/confディレクトリにあります。

resolveプロパティと、preferおよびdeferの各プロパティは、カタログの属性またはカタログ・ファイルのグループ・エンティティとして設定できます。たとえば、次のカタログでは、resolve属性が値continueで設定されています。属性は、次のようにgroupエントリでも設定できます。

<?xml version="1.0" encoding="UTF-8"?> 
<catalog
  xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"
  resolve="continue"
  xml:base="http://local/base/dtd/">
  <group resolve="continue">
    <system
      systemId="http://remote/dtd/alice/docAlice.dtd"
      uri="http://local/dtd/docAliceSys.dtd"/>     
  </group> 
</catalog>

より狭い範囲に設定されたプロパティは広い範囲に設定された属性をオーバーライドします。そのため、APIを使用して設定されたプロパティが常に優先されます。