Использование XJC с XMLCatalog с использованием относительных путей
Я использую XJC, и теперь я хочу использовать XMLCataloges, который ссылается на другие каталоги. Проблема заключается в том, что он должен иметь возможность использовать относительные пути вместо абсолютных при обращении к другим каталогам.
Этот каталог помещается в project1 и должен ссылаться на файл catalog.xml, расположенный в project2.
<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?
1 ответ
Мой веб-поиск с использованием относительных путей не был успешным.
В конце концов я написал задачу муравья, которая редактирует файлы каталога.
Подробно задача отредактирует атрибут xml:base файла каталога и вставит абсолютный путь к файлу каталога. Затем я сохраняю каталог как, например, catalog_temp.xml и получаю все узлы nextCatalog с XPath, которые будут редактироваться рекурсивно, как и первый.
После выполнения XJC я снова выполняю задачу ant, которая удаляет все отредактированные каталоги (catalog_temp.xml).