3

2 つの XML スキーマがあります。1つ目 ( A.xsd) はライブラリ jar ファイル ( mylib.jar) にあり、2 つ目 ( B.xsd) は私のプロジェクトにあります。

A.xsdにインポートして、埋め込まれたバリデーターB.xsdを介して着信 XML を検証したいと考えています。Jaxb2Marshaller

しかし、私はそれを適切に動作させることができません: の内部 XML バリデーターはJaxb2Marshaller、jar ファイル内のファイルへの参照を理解していないようです (単に のようなものを書きたいだけです<xs:import namespace="http://my/schema.xsd" schemaLocation="classpath:schema.xsd">)。

どうすれば修正できますか?プロジェクト スキーマからライブラリ スキーマをどのように参照できますか?

4

3 に答える 3

4

ResourceResolver を使用してこの問題を解決する方法については、以前の質問に対する私の回答をご覧ください。

LSResourceResolver の実装は、クラスパスからのスキーマのロードと、適切な結果への変換を処理します。

于 2010-10-20T15:25:45.240 に答える
1

独自のリゾルバーを構成する必要があります。jaxb では、classpath: を使用するものはありません。

このようなことを示す JAXB サンプルがあります。

于 2010-10-20T14:57:04.887 に答える
0

クラスパス: スキーマの場所として有効な URL ではありません。jar からスキーマをロードするには、 XML カタログを使用する必要があります。

于 2010-10-20T14:59:59.523 に答える