RELAX NG - プロバイダはASAHIネット|料金、接続

XMLのスキーマ書法
村田 真
日本IBM(株)東京基礎研/国際大学
目標

仕事の現場でスキーマをどう扱うかについ
ての判断ができる




使うか使わないかの判断ができる
借用するかどうかの判断ができる
スキーマの作成・保守ができる
スキーマについて研究したい人へのヒント
調査




XML文書を作成したことがあるかどうか
DTDを読んだことがあるかどうか
その他のスキーマを読んだことがあるかど
うか
XMLを使うアプリケーションを知っているか
どうか
XML文書





タグを含んだテキスト
XML宣言 ( <?xml version="1.0"
> )で始まる(ことが多い)
開始タグと終了タグ
空要素タグ
属性
要素

開始タグ + 終了タグ




<foo>…</foo>
<foo></foo>
<foo><bar>…</bar></foo>
空要素タグ


<foo/>
<foo>
<bar/>
</foo>
属性

開始タグまたは空要素タグの中に書ける



<foo bar="a">
<foo bar="a"/>
<foo
bar="a"
hoge="a"/>
割愛するもの





コメント
処理命令
CDATAセクション
DTD
文書型宣言
HTMLとの違い


文法エラーは許されない(エラー回復はな
い)
タグ名・属性名はなんでもいい

<授業科目名 単位数= "1" >コンピュータ
サイエンス特別講義Ⅲ</授業科目名>
名前空間


名前の衝突を避けることが目的
機構


名前空間宣言(接頭辞とURIの対応付け)
 xmlns="http://www.exmpl.com"
 xmlns:pre="http://www.exmpl.com"
名前(接頭辞:局所名)
 <foo xmlns="http://www.exmpl.com">
 <pre:foo
xmlns:pre="http://www.exmpl.com">
XML文書を操作する技術



API(SAX, DOM, etc.)
検索言語・変換言語(XSLT, XQuery, etc.)
…
なぜXMLにするか





XMLでいちおう表現できる。
完成度の高いXMLパーサがどこにでも無
料で入手できる。
テキストエディタで表示・操作できる。
徹底的な国際化がされている。
人間にとって読みやすく、理解しやすい。
演習1: XML文書の設計と作成

用途


年賀などのための住所録
表現する情報



自分の名前
住所
電話番号(携帯)
oXygen

XMLエディタ
oXygen(http://www.oxygenxml.com/)を
用いる。

Standalone Version のtrial versionをインス
トールする。
構文チェックのためのスキーマ
文書が悪さをしないためのもの
スキーマとは何か



ある用途のためのタグ名や属性名の集ま
り (XHTML, SVG, MML, etc.)を規定したも
の
プログラムは、スキーマに従うXML文書を
処理するように書く
例: <para>ではなく、<p>を使う。
スキーマを用いた検証
スキーマ
はい、文書は妥当です。
*
又は
いいえ、文書は妥当で
はありません。
XML文書
スキーマ言語



DTD
W3C XML Schema
RELAX NG
スキーマなしで済ませられない
か?



スキーマを書くのは大変だ
せっかくXMLではDTDを省略可能にしたの
になんで?
XMLは簡単なはずだったのに…
スキーマはいる

どんな文書を受け付けるのかを明確にしな
いと処理プログラムが書けない
スキーマを使わないとすると


スキーマ相当の内容を文章で書き、文書
例を豊富に用意する
プログラムを書いてチェックする



使っていいタグ名・属性名か
正しい組み合わせか
データ型チェック
演習2: ContactXML文書の作成


スキーマがある状態でContactXML文書を
作成
スキーマのURL


http://www.asahi-net.or.jp/%7Eeb2mmrt/tsukuba/2007/myContactXml.rnc
ContactXML仕様書

http://www.xmlconsortium.org/wg/contact/
data/ContactXML_01_01a.pdf
参考


檜山 正幸、XMLボキャブラリのデザイン・
パターン(http://www.itarchitect.jp/xml//10865.html)
檜山 正幸、XMLボキャブラリのアンチ・パ
ターン(http://www.itarchitect.jp/xml//10904.html)