XMLカタログAPIのインタフェース
XMLカタログAPIにアクセスするは、XMLカタログAPIのインタフェースを使用します。
XMLカタログAPIのインタフェース
XMLカタログAPIでは、次のインタフェースが定義されています。
-
Catalog
インタフェースは、XMLカタログ、OASIS標準V1.1 (2005年10月7日)で定義されているとおり、エンティティ・カタログを表します。Catalog
オブジェクトは不変です。Catalog
オブジェクトを作成したら、これを使用してsystem
、public
、またはuri
エントリ内の一致を探します。カスタム・リゾルバを実装すると、カタログを使用してローカル・リソースを検索するのが便利であることがわかります。 -
CatalogFeatures
クラスには、javax.xml.catalog.files
、javax.xml.catalog.defer
、javax.xml.catalog.prefer
、およびjavax.xml.catalog.resolve
などの、カタログAPIがサポートする機能とプロパティが保持されています。 -
CatalogManager
クラスは、XMLカタログおよびカタログ・リゾルバの作成を管理します。 -
CatalogResolver
インタフェースは、スキーマ検証で使用するSAXEntityResolver
、StAXXMLResolver
、DOM LSLSResourceResolver
、および変換URIResolver
を実装するカタログ・リゾルバです。インタフェースではカタログを使用して外部参照が解決されます。
CatalogFeaturesクラスの詳細
カタログ機能はCatalogFeaturesクラスにまとめて定義されています。機能はAPIレベルとシステム・レベルで定義されており、API、システム・プロパティおよびJAXPプロパティを使用して設定できます。APIを使用して機能を設定するには、CatalogFeaturesクラスを使用します。
次のコードでは、javax.xml.catalog.resolveがcontinue
に設定されるため、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を使用して設定されたプロパティが常に優先されます。