「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ファイルの妥当性検証を行う」同様の処理を実現してみることにしましょう。
ここでは、最も単純なXML Schema文書の例として、以下のようなbook.xsdとbook.xsdに基づいて記述したXML文書book.xmlを定義しておくことにします。XML Schemaに関する細かな構文規則については説明しませんが、一点だけ以下の点を理解しておいてください。
<?xml
version="1.0" encoding="UTF-8"?> |
<?xml
version="1.0" encoding="UTF-8" ?> |
赤字部分がXML文書を特定のXML Schemaに結び付けている部分です。ここでは、“http://www.wings.msn.to/schema/”名前空間に属する<book>要素配下の一連の文書が「book.xsd」で指定されたXML Schemaのルールにのっとっているということを意味します。
XML/XMLSchema文書の用意ができたところで、次にパーサによる解析を実行するためのJavaアプリケーションを作成してみましょう。
package to.msn.wings.javatips; |
本サンプルを実行するには、以下のサイトからあらかじめXercesをダウンロードし、Xerces-J-bin.X.X.X.zip(X.X.Xはバージョン番号)に含まれるxercesImpl.jarに対してクラスパスを設定する必要があります。
http://xml.apache.org/xerces2-j/index.html |
以上をコンパイルの後、コマンドプロンプトから以下のように入力してください。なお、検証対象となるbook.xmlとスキーマ文書book.xsdは、あらかじめCドライブの直下に配置しておくものとします。
> java to.msn.wings.javatips.SchemaValidation c:\book.xml |
もしもXML文書中に不備があった場合には、コマンドプロンプト上にメッセージが表示されるはずです。例えば、以下は<book>要素の配下に誤った要素が存在する場合のエラー例です。
エラー: 6行目 |
Copyright © ITmedia, Inc. All Rights Reserved.