一連のXMLファイルをそれらのXSDに対して検証する当社のXSD用の製品をセットアップしようとしています。
私たちのプロジェクトはMavenベースであり、antスクリプトを使用してカタログファイルを生成します(これにより、これらすべてのスキーマをEclipseインスタンスに簡単に追加できます)。
私が抱えている問題は、XMLカタログを使用して、これらのスキーマに対して一連のサンプルxmlファイルを検証するMavenまたはAntタスクをセットアップできないことです。これらすべてのスキーマに対してURNからXSDへのルールを明示的に定義したくありません(これがXML Catalgの目的です)。
次の設定を試しました。
Maven
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>validate</goal>
</goals>
</execution>
</executions>
<configuration>
<catalogs>
<catalog>${project.build.outputDirectory}/catalog.xml</catalog>
</catalogs>
<validationSets>
<validationSet>
<dir>src/test/xml</dir>
<validating>true</validating>
</validationSet>
</validationSets>
</configuration>
</plugin>
これにより、catalog.xmlの解析に失敗します。ベースcatalog.xmlには、正しく展開されていない相対的なnextCatalogエントリが含まれています(絶対パスが間違っています)。2つのcatalog.xmlエントリをpomに直接追加すると、最初のエントリのみが解析されます。
ただし、最初のcatalog.xmlファイルのみが解析されたとしても、xmlファイルの検証に失敗します。
line 4, column 191: cvc-elt.1: Cannot find the declaration of element 'mtc:SERVICE_ORDER_MSG'.
サンプルのXMLファイルは有効であるため、Mavenはカタログを介してロードされたスキーマをバリデーターにリンクしていないようです。-XIを使用すると、カタログが処理され、スキーマとその名前空間が表示されます。
蟻
antを使用して、次の設定を試しました(インターネットで見つかったさまざまな提案を試しました)。
<target name="test">
<schemavalidate warn="true" failonerror="true" fullchecking="true">
<fileset dir="src/test/xml">
<include name="ASN_207a44e3-0aeb6cd8-551ffcc2-2ca1409a.xml" />
</fileset>
<xmlcatalog>
<classpath>
<pathelement location="resolver.jar" />
<pathelement location="ant-apache-resolver-1.8.4.jar" />
</classpath>
<xmlcatalog>
<catalogpath>
<pathelement location="target/classes/MTC/catalog.xml" />
</catalogpath>
</xmlcatalog>
</xmlcatalog>
</schemavalidate>
</target>
この場合、カタログファイルが解析されていることを示すものはありません。予期しない要素のエラーのみが発生します。スキーマファイルを直接使用するようにantスクリプトを変更すると、機能しますが、それは私が望む設定ではありません。