検証XMLプロセッサを使ってXML文書がDTDに準拠しているか検証する

広告

作成したXML文書がDTDで記述したルールに従っている場合、その文書は「妥当な文書」と呼ばれます(XMLのな文法に従っている整形式文書でもある必要があります)。XML文書が妥当な文書かどうかは専用のツール(検証XMLプロセッサと呼ばれます)を使って確認することができます。ここでは検証用ツールとして利用できる「Markup Validation Service」を使って検証する方法について解説します。

今回は下記のMarkup Validation Serviceを利用してみます。このサービスはWorld Wide Web Consortium(W3C)が提供しているものでHTMLページの構文チェック用のものですが、DTDが記述されたXML文書がルールに適合しているかどうか検証することもできます。

p2-1

検証を行うには、(1)公開されているXMLであればそのURIを指定する、(2)ローカルに保存されているファイルであればアップロードする、(3)XML文書をコピーして貼り付ける、の3つの方法があります。今回は保存したXML文書を検証してみます。

最初に次のXML文書が妥当な文書かどうかを検証します。

sample2_1.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE 在庫データ[
    <!ELEMENT 在庫データ (商品)>
    <!ELEMENT 商品 (名前, 個数)>
    <!ELEMENT 名前 (#PCDATA)>
    <!ELEMENT 個数 (#PCDATA)>
]>

<在庫データ>
    <商品>
        <名前>自転車</名前>
        <個数>20</個数>
    </商品>
</在庫データ>

ファイルアップロードして検証する場合は「Validate by File Upload」タブをクリックして下さい。

p2-2

「Validate by File Upload」画面が表示されます。

p2-3

「ファイルを選択」をクリックするとファイル選択ダイアログが表示されますので、検証を行いたいXML文書を選択して下さい。

p2-4

続いて「More Options」をクリックし「Character Encoding」の値として使用している文字コードを選択して下さい。(XML文書を検証する場合は手動で設定する必要があります)。

p2-5

最後に「Check」をクリックしてください。

p2-6

次のように「This document was Tentatively checked as XML」と表示されればXML文書は記述したDTDに従っています。

p2-7

-- --

では少しXML文書を変更し「個数」タグを「在庫数」タグに変更してみます。

sample2_2.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE 在庫データ[
    <!ELEMENT 在庫データ (商品)>
    <!ELEMENT 商品 (名前, 個数)>
    <!ELEMENT 名前 (#PCDATA)>
    <!ELEMENT 個数 (#PCDATA)>
]>

<在庫データ>
    <商品>
        <名前>自転車</名前>
        <在庫数>20</在庫数>
    </商品>
</在庫データ>

先ほどと同じ手順でファイルをアップロードして文字コードを選択してから「Check」をクリックして下さい。すると今度は「Errors found while checking this document as XML!」のように表示されました。

p2-8

下の方にスクロールして頂くと、エラーがどこで発生しているのかを確認することができます。

p2-9

今回の場合は「ine 13, Column 13: element "在庫数" undefined」と表示されているようにDTDで定義されていない「在庫数」タグを使用したためエラーが表示されました。

このように「Markup Validation Service」を使用することで簡易的ではありますがXML文書が妥当な文書かどうかの検証を行うことができます。

( Written by Tatsuo Ikura )