検索
連載

XMLSchemaを使ったXMLファイルの妥当性検証を行うJavaTips 〜Javaアプリケーション編

Share
Tweet
LINE
Hatena

 「DTDを使ったXMLファイルの妥当性検証を行う」では、DTD(Document Type Definition)を利用したXML文書の妥当性を検証する方法について紹介しました。「DTDを使ったXMLファイルの妥当性検証を行う」でも紹介したように、DTDを利用することでデータ検証をXMLパーサに委ねることができるという利点があります。しかし、DTDにまったく問題がないというわけではありません。例えば、DTDには「XML文書とは異なる形式で記述しなければならない」「データ型を持たない」「名前空間をサポートしない」など、XMLを高度に利用する場合にネックとなるさまざまな短所もあります。

 このような問題を解消するために策定されたのがXML Schemaです。XML Schemaは仕様自体が複雑多岐にわたるため、仕様勧告当初はしばらく敬遠されていたきらいもありましたが、昨今、サーブレット2.4ではデプロイメント・ディスクリプタ(web.xml)の文書型宣言に利用されるなど、少しずつXML Schemaが利用される機会も多くなってきています。XML Schemaに関する詳細は本TIPSの守備範囲を超えるため、ここでは割愛しますが、「XMLテクニック集」なども参考にしていただければと思います。本TIPSでは、XML Schemaを利用して「DTDを使ったXMLファイルの妥当性検証を行う」同様の処理を実現してみることにしましょう。

(1)XML文書とXML Schema文書とを用意する

 ここでは、最も単純なXML Schema文書の例として、以下のようなbook.xsdとbook.xsdに基づいて記述したXML文書book.xmlを定義しておくことにします。XML Schemaに関する細かな構文規則については説明しませんが、一点だけ以下の点を理解しておいてください。

book.xml

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


book.xsd

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


 赤字部分がXML文書を特定のXML Schemaに結び付けている部分です。ここでは、“http://www.wings.msn.to/schema/”名前空間に属する<book>要素配下の一連の文書が「book.xsd」で指定されたXML Schemaのルールにのっとっているということを意味します。

(2)Javaアプリケーションを用意する

 XML/XMLSchema文書の用意ができたところで、次にパーサによる解析を実行するためのJavaアプリケーションを作成してみましょう。

SchemaValidation.java

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


 本サンプルを実行するには、以下のサイトからあらかじめXercesをダウンロードし、Xerces-J-bin.X.X.X.zip(X.X.Xはバージョン番号)に含まれるxercesImpl.jarに対してクラスパスを設定する必要があります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


 以上をコンパイルの後、コマンドプロンプトから以下のように入力してください。なお、検証対象となるbook.xmlとスキーマ文書book.xsdは、あらかじめCドライブの直下に配置しておくものとします。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


 もしもXML文書中に不備があった場合には、コマンドプロンプト上にメッセージが表示されるはずです。例えば、以下は<book>要素の配下に誤った要素が存在する場合のエラー例です。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る