XML Schema (1)
ソフトウェア特論
第3回 / 2004-05-07
連絡
次週 (5/14) は休講となります。
きょうの目標
XML Schema の基本を知る
DTD
DTDとは何か
XMLベースの言語で、どのようなタグがど
のような組み合わせで利用できるかという
情報を記述するためのもの。
DTDの例
<?xml version="1.0" encoding="Shift_JIS"?>
<!ELEMENT BOOKLIST (BOOK+)>
<!ELEMENT BOOK (
TITLE, AUTHOR, PUBLISHER)>
<!ELEMENT TITLE
(#PCDATA)>
<!ELEMENT AUTHOR
(#PCDATA)>
<!ELEMENT PUBLISHER
(#PCDATA)>
DTDを使ったXML文書
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE BOOKLIST SYSTEM "BOOKLIST.dtd">
<BOOKLIST>
<BOOK>
<TITLE>情報メディア論</TITLE>
<AUTHOR>丸山不二夫 編著</AUTHOR>
<PUBLISHER>八千代出版</PUBLISHER>
</BOOK>
………
</BOOKLIST>
DTDの限界
1.
2.
3.
4.
XMLらしくない記法。
要素の出現回数、出現順序などの設定
に制限が多い。
データ型を指定できない。
名前空間が使いにくい。
XMLの限界 (1)
XMLらしくない記法
「要素を組み合わせる」という記法ではな
いので、わかりにくい。
<!ELEMENT BOOKLIST (BOOK+)>
<!ELEMENT BOOK (
TITLE, AUTHOR, PUBLISHER)>
<!ELEMENT TITLE
(#PCDATA)>
XMLの限界 (2) 要素の出現回数、
出現順序などの設定に制限が多い
この要素は2回以上5回まで出現できる、
といった指定ができない。
要素が順不同に出現する、といった指定
ができない。
XMLの限界 (3)
データ型を指定できない
DTD では、要素の内容として次の2つしか
指定できない。
他の要素
PCDATA
この要素には数字が入る、といったデータ
型の指定ができない。
XMLの限界 (4)
名前空間が使いにくい
DTDは名前空間を扱うようには設計されて
いない。
DTDで定義したタグを名前空間をつけて扱
えない。
XML Schema とは何か
XML Schema
DTD とは別に、World Wide Web
Consortium (W3C) が策定したスキーマ
言語。
いま述べた DTD の弱点を補える。
単純な XML Schema
<?xml version="1.0"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace=
"http://www.wakhok.ac.jp/~tomoharu/students"
xmlns:st=
"http://www.wakhok.ac.jp/~tomoharu/students">
<xsd:element name=“name”
type="xsd:string"/>
</xsd:schema>
もっと単純化すると
<?xml version="1.0"?>
<xsd:schema>
<xsd:element name=“name”
type="xsd:string"/>
</xsd:schema>
要素の指定
<xsd:element name=“name” type="xsd:string"/>
name という名前のタグがある。
内容は string (=文字列) である。
例)
<name>安藤友晴</name>
「名前空間」とは
XMLでは、ひとつの文書に(XMLベースの)複数
の言語を組み合わせて使うことができる。
複数の言語を使うとき、同じ名前のタグがあった
ら困る。
そこで、どの言語のタグなのかを名前空間で識
別する必要がある。
URIを名前空間として使うと、他とのダブリがなく
なる。
XML Schema 自体の
名前空間の指定
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace=
"http://www.wakhok.ac.jp/~tomoharu/students"
xmlns:st=
"http://www.wakhok.ac.jp/~tomoharu/students">
<xsd:element name=“name”
type="xsd:string"/>
</xsd:schema>
この XML Schema の
名前空間の指定
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace=
"http://www.wakhok.ac.jp/~tomoharu/students"
xmlns:st=
"http://www.wakhok.ac.jp/~tomoharu/students">
<xsd:element name=“name”
type="xsd:string"/>
</xsd:schema>
ファイルの保存
XML Schema のファイルは “.xsd” という
拡張子を持つのが普通
例えば sample01.xsd
このXML Schema を使った
XML インスタンス
<?xml version="1.0"?>
<st:name
xmlns:st=
"http://www.wakhok.ac.jp/~tomoharu/students"
xmlns:xsi=
“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=
"http://www.wakhok.ac.jp/~tomoharu/students
sample01.xsd">
安藤友晴
</st:name>
属性を無視すると
<?xml version="1.0"?>
<st:name>
安藤友晴
</st:name>
XML Schema で指定
したとおり
name という名前
のタグがある。
内容は string (=
文字列) である。
XML Schema の指定 (1)
<?xml version="1.0"?>
<st:name
xmlns:st=
"http://www.wakhok.ac.jp/~tomoharu/students"
xmlns:xsi=
“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=
"http://www.wakhok.ac.jp/~tomoharu/students
sample01.xsd">
安藤友晴
</st:name>
XML Schema の指定 (2)
xsi:schemaLocation=
"http://www.wakhok.ac.jp/~tomoharu/students
sample01.xsd">
XML Schema の URI
ファイルの実体がある場所でない
XML Schema のファイル
sample01.xsd
カレントディレクトリにある
http://www.wakhok.ac.jp/~tomoharu/students
このXML Schema の
名前空間 (1)
<?xml version="1.0"?>
<st:name
xmlns:st=
"http://www.wakhok.ac.jp/~tomoharu/students"
xmlns:xsi=
“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=
"http://www.wakhok.ac.jp/~tomoharu/students
sample01.xsd">
安藤友晴
</st:name>
このXML Schema の
名前空間 (2)
http://www.wakhok.ac.jp/~tomoharu/st
udents という URI を持つ XML Schema
で定義されているタグは
st という接頭辞を持つ
例)
<st:name>安藤友晴</st:name>
XSV による検証
XSV
XML Schema の検証ツール。
XML 文書が XML Schema に適合しなけ
れば、エラーメッセージを出す。
W3C の協力を得ながら、エジンバラ大学
で開発が進んでいる。
オープンソース
http://www.ltg.ed.ac.uk/~ht/xsvstatus.html
XSV を使う
インストール
XSV をインストールしたフォルダに path を
通す。
使い方
コマンドプロンプト (or cygwin) から使う
xsv sample01.xml
検証結果は XML ファイルとして出力され
る。
XSV の使用例
C:\Home\200405>xsv sample01.xml
<?xml version='1.0'?>
<xsv xmlns="http://www.w3.org/2000/05/xsv"
docElt="{http://www.wakhok.ac.jp/~tomoharu/students}name"
instanceAssessed="true" instanceErrors="0" rootType="string"
schemaErrors="0"
schemaLocs="http://www.wakhok.ac.jp/~tomoharu/students ->
sample01.xsd"
target="file:///C:/Home/200405/sample01.xml" validation="strict"
version="XSV 2.7-1 of 2004/04/01 13:40:50">
<schemaDocAttempt URI="file:///C:/Home/200405/sample01.xsd"
namespace="http://www.wakhok.ac.jp/~tomoharu/students"
outcome="success" source="schemaLoc"/>
</xsv>
注意点
XML に日本語が含まれる場合、utf-8 で保
存する必要がある。
utf-8 = XML のデフォルトの設定
Shift_JIS や EUC ではだめ。
参考文献・URL
Extensible Markup Language (XML) 1.0
(Third Edition)
http://www.w3.org/TR/REC-xml/
XML 1.0 の仕様書です。
W3C XML Schema
http://www.w3.org/XML/Schema
XML Schema の仕様書など。
© Copyright 2026 ExpyDoc