2009-06-11 7 views
3

XMLCatalogを使用してスキーマインポートステートメントのxsdsを解決できますか?もしそうなら、好ましい/ベストプラクティスは何ですか?私はjarファイルにxsdsをパッケージ化したいので、相対的なschemaLocationを使用しても機能しません。多くの幸運がないとXMLCatalogをスキーマのインポートに使用できますか?

SchemaFactory factory = SchemaFactory 
     .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
XMLCatalogResolver catalogResolver = new XMLCatalogResolver(
     new String[]{"/path/to/catalog.xml"}); 
factory.setResourceResolver(catalogResolver); 

Schema schema = factory.newSchema(new StreamSource(ClassLoader 
     .getSystemResourceAsStream("config.xsd"))); 

これまでのところ、私のような何かをしようとしています。 絶対URIを

の規則配列リスト - あなたはthe Javadoc for this methodを見ればあなたが

カタログを読むことができます

XMLCatalogResolver catalogResolver = new XMLCatalogResolver(
     new String[]{"catalog.xml"}); 

:私は2つの問題を参照してください簡単に見で

答えて

5

それはあなたが使うものではありません。

第二の問題は、ここで

Schema schema = factory.newSchema(new StreamSource(ClassLoader 
     .getSystemResourceAsStream("config.xsd"))); 

インポートのための相対的な位置を持っている場合は、代わりに、アプリケーションの現在のディレクトリからの相対解決されるようにするには、スキーマのシステムIDを設定していないですスキーマファイルがあるディレクトリの助けのための

new StreamSource(ClassLoader.getSystemResource("config.xsd").toString()) 
+1

感謝を:あなたはそれを作成するときは、どちらかがソースにを呼び出すのsetSystemIdまたはシステムIDを渡す必要があります。ファイルがjarファイル内にある場合、相対参照は機能しますか?私はxsdsをjar'dするとすぐに失敗しました。 – jon077

関連する問題