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 2025 ExpyDoc