JavaA2Z

KAB-studio > プログラミング > JavaA2Z > XMLスキーマとは

XMLスキーマ

日本語 拡張可能印言語構造構造図
英語 eXtensible Markup Language schema
ふりがな えっくすえむえるすきーま
フリガナ エックスエムエルスキーマ

解説

XMLが「妥当」かどうか検証するためのファイル
 
XMLそのもののルールは、「タグがちゃんと閉じているかどうか」「タグの中にタグが入っているかどうか」といった基本的なことくらいで、特に厳しいルールは存在しない。
だが、「特定のアプリケーションXML」は、そのXMLごとに厳しいルールが存在する。たとえば「タグAの中には必ずタグBがなければならない」「タグCの中にはタグDかタグEが存在する」「タグFの中にタグGが0個以上存在する」といったルールである。
アプリケーションXMLパーシングする際には「XMLがこのルールに則って記述されている」ことを前提としているため、ルールに反しているXMLパーシングすることができなくなる。
そこで、XMLの構造(スキーマ)がルールに則っているかどうかを判別することが必要となる。そのための「ルール」を記述したファイルが「XMLスキーマ」である。
 
XMLスキーマは通常ファイルとなっており、XMLのルールが記述されている。
この記述形式、つまり「XMLスキーマの言語仕様」を「XMLスキーマ言語」といい、DTDXML Schema、RELAX等が存在する。
XMLスキーマは、XMLスキーマ言語XMLの「ルール」を記述する。このルールに則っているXMLは「妥当なXMLである」と表現する。
つまり、いわばこれは「XMLコンパイル」のようなものである。Javaプログラムが正しいかどうかコンパイルすることでチェックできるのと同様に、XMLスキーマを用いてXMLプログラムが正しいかどうかチェックするわけである。
 
XMLスキーマは必ずしも必要ではない。
XMLはXMLスキーマなしでも使用することができる。
XMLスキーマを使用しない場合、XMLの正当性を検証することができないため、作成することが望ましいが、単にローカルファイルXML形式で保存する、程度の場合には作成する必要はないだろう。
また、XMLスキーマは通常ファイルとして保存し、ローカルファイルとして置くかもしくはインターネット上で公開する。インターネット上で公開する場合、XMLスキーマによる妥当性チェックをう度にインターネットのXMLスキーマを取得することになる。またローカルファイルに置く場合には、そのローカルファイルのXMLスキーマをXMLファイルと一緒に配布しなければならない場合もある。
一度XMLスキーマを作成してしまうと、XMLの仕様を変更するたびにXMLスキーマも変更しなければならず、そのため修正やバージョン管理が難しい面もある。
 
XMLが生まれたばかりの頃はXMLスキーマは重要な位置づけであったが、現在では様々なXMLが使用されるようになりXMLスキーマの作成が後追いになっていること、XMLスキーマ言語が複数存在していることにより「難しいもの」という印象を与えてしまっていることにより、あまり使われない傾向にある。
あった方がいいに越したことはないが、思いの外コストやデメリットがあるため、検討した上で導入した方がいいだろう。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

<!-- D:/sample.dtd -->
<!-- XMLスキーマ言語のひとつ、DTDで記述したXMLスキーマです。 -->
<!-- UTF-8で保存してください。 -->
<!ELEMENT test_xml (test1,test2)>   <!-- test_xmlタグ内にtest1タグとtest2タグがある、という意味です。 -->
<!ELEMENT test1 (#PCDATA)>          <!-- test1タグ内に文字列がある、という意味です。 -->
<!ELEMENT test2 (test2_child)>      <!-- test2タグ内にtest2_childタグがある、という意味です。 -->
<!ELEMENT test2_child (#PCDATA)>    <!-- test2_childタグ内に文字列がある、という意味です。 -->



<!-- D:/sample.xml -->
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE test_xml SYSTEM "file:///D:/sample.dtd">
<test_xml> 
    <test1>テストです</test1>
    <test2>
        <test2_child>テストですって</test2_child>
    </test2>
</test_xml>
<!-- D:/sample.dtd -->
<!-- XMLスキーマ言語のひとつ、DTDで記述したXMLスキーマです。 -->
<!-- UTF-8で保存してください。 -->
<!ELEMENT test_xml (test1,test2)>   <!-- test_xmlタグ内にtest1タグとtest2タグがある、という意味です。 -->
<!ELEMENT test1 (#PCDATA)>          <!-- test1タグ内に文字列がある、という意味です。 -->
<!ELEMENT test2 (test2_child)>      <!-- test2タグ内にtest2_childタグがある、という意味です。 -->
<!ELEMENT test2_child (#PCDATA)>    <!-- test2_childタグ内に文字列がある、という意味です。 -->



<!-- D:/sample.xml -->
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE test_xml SYSTEM "file:///D:/sample.dtd">
<test_xml> 
    <test1>テストです</test1>
    <test2>
        <test2_child>テストですって</test2_child>
    </test2>
</test_xml>

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/12/01
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。