今回は Jing を使って、RELAX NG による XML 文書の妥当性検証を行う方法を見ていきます。 Jing の JAR ファイル等はこちらからダウンロードできます。 また、Maven2 で依存性に付加したい場合は、次のような <dependency> 要素を設定してください:
<dependency> <groupId>thaiopensource</groupId> <artifactId>jing</artifactId> <version>20030619</version> </dependency>
妥当検証の方法は、概ね以下のような方法があります:
- コマンド・プロンプトから実行
- Java プログラムを実行
- Ant タスクを実行
以下では、RELAX NG スキーマは "schema.rng"、検証対象となる XML ファイルは "target.xml" とします。
コマンド・プロンプトから実行
jing.jar は「実行可能な JAR ファイル」なので、通常の JAR ファイルの実行方法で実行が行えます:
この例では、「jing.jar」はカレント・フォルダ上にあるとしています。 うまくいかない場合は、環境変数 JAVA_HOME, CLASSPATH, PATH などの設定を確認してください(詳細は省略)。
Java プログラムを実行
以前、javax.xml.validation パッケージ内のクラスを使って妥当性検証を行う方法を見ましたが、今回は Jing の Native API を用いる方法を紹介:
import org.xml.sax.InputSource; import com.thaiopensource.validate.SchemaReader; import com.thaiopensource.validate.ValidationDriver; import com.thaiopensource.validate.rng.SAXSchemaReader; class Main{ public void main(String... args)throws Exception{ SchemaReader reader = SAXSchemaReader.getInstance(); ValidationDriver driver = new ValidationDriver(reader); driver.loadSchema(new InputSource("schema.rng")); System.out.println(driver.validate(new InputSource("target.xml"))); } }
検証対象の XML 文書が妥当なら "true" が、そうでないなら "false" が表示されます。
Ant タスクを実行
Jing の JAR ファイル内に、すでに Ant タスクを実装したクラスが定義されています。 したがって、Ant のビルドファイル (build.xml) 内では、タスクの定義(<taskdef> 要素)を書けば、後は通常のタスクを書くように妥当性検証を行えます:
<?xml version="1.0"?> <project name="RelaxNG" default="validation" basedir="."> <!-- 妥当性検証のタスクを定義 --> <taskdef name="jing" classpath="jing.jar" classname="com.thaiopensource.relaxng.util.JingTask"/> <target name="validation"> <!-- 妥当性検証タスクを実行 --> <jing rngfile="schema.rng" file="target.xml"/> </target> </project>
あとは、コマンド・プロンプト上(ビルドファイルがある場所)で「ant」コマンドを実行するだけです:
ant
妥当性検証が成功すれば、「BUILD SUCCESSFUL」と表示されます。