0

私は XJC を使用していますが、他のカタログを参照する XMLCataloges を使用したいと考えています。問題は、他のカタログを参照するときに、絶対パスではなく相対パスを使用できる必要があることです。

このカタログは project1 に配置され、project2 にある catalog.xml ファイルを参照する必要があります。

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">

<public publicId="http://company.com/test"
    uri="src/main/resources/test.xsd" />

<nextCatalog catalog="../project2/catalog.xml" /></catalog>

XJC 呼び出しは次のようになります。

<java fork="true" jar="${xjc-jar-file}">
    <!-- folder where the generated files should be saved -->
    <arg value="-d" />
    <arg value="${target-folder}"/>
        <arg value="-extension" />
    <!-- catalog file -->
    <arg value="-catalog" />
    <arg value="${catalog-file}" />
    <!-- current xsd file -->
    <arg value="@{xsd-file}" />
</java>

カタログ ファイルを間違えたのでしょうか、または XJC でそのようなカタログを使用するための回避策はありますか?

4

1 に答える 1

0

相対パスを使用するための私のWeb検索は成功しませんでした。

最後に、カタログファイルを編集するantタスクを作成することになりました。

詳細には、タスクはカタログファイルのxml:base属性を編集し、カタログファイルへの絶対パスを挿入します。次に、カタログをたとえばcatalog_temp.xmlとして保存し、XPathを使用してすべてのnextCatalogノードを取得します。これは、最初のノードと同様に再帰的に編集されます。

XJCを実行した後、編集した(catalog_temp.xml)カタログをすべて削除するantタスクを再度実行します。

于 2012-08-01T11:19:45.813 に答える