RELAX チュートリアル 川口耕介 Swift,Inc..

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

プログラミング Ⅱ 第2回 第1回(プログラミングⅠの復 習) の解説. プログラムの作り方 いきなり完全版を作るのではなく,だんだ んふくらませていきます. TicTa cToe1.
プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
Flash SWF ファイル書き換え PHP extension 2008 年 7 月 21 日 よや.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
情報処理実習 第05回 Excelマクロ機能入門 操作マクロ入門.
バリデータ J2EE II 第11回 / 2006年1月19日.
画像展示サイト“Fragments” 『閲覧しやすさ』と『デザイン性』を両立させた Webデザイン
JavaScript プログラミング入門 2006/11/10 神津.
プログラミング基礎I(再) 山元進.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
Excel による データベース入門 Ver /9.
ウェブページ制作の基礎 タグの直接入力によるウェブページの制作 次のスライドへ進んだり,戻ったりしたい時は,右下のボタンをクリック。 次へ.
HTMLの記述と WWWにおける情報公開 遠藤
クイズ 「インターネットを使う前に」 ネチケット(情報モラル)について学ぼう.
第6章 2重ループ&配列 2重ループと配列をやります.
構造体.
HTTPプロトコルとJSP (1) データベース論 第3回.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
スクリプト言語を用いたPHITSの連続実行
第7回 条件による繰り返し.
情報工学科 3年生対象 専門科目 システムプログラミング 第5回、第6回 ヒアドキュメント レポート課題 情報工学科 篠埜 功.
HTTPとHTML 技術領域専攻 3回 中川 晃.
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
第10回 2007年6月29日 応用Java (Java/XML).
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
プログラミング言語論 第3回 BNF記法について(演習付き)
第11回 2007年7月6日 応用Java (Java/XML).
第二回 VB講座 電卓を作ろう.
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
第7回 条件による繰り返し.
平成19年10月19日 図書系のための アプリケーション開発講習会
独習XML ~第3章 文書と構造~ 3.3 スキーマ 3.3 XML Schema
エンタープライズアプリケーション II 第9回 / 2006年7月23日
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
7-0.SWORD Client for WEKO インストールマニュアル Version 2.2
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
コンピュータ プレゼンテーション.
XML Schema (1) ソフトウェア特論 第3回 /
~let's take fun when you can do it~
XMLゼミ 3.5 DTD M2 正木 裕一.
3-1.文書と構造 3-2.整形式文書と検証済み文書 兒玉 光太郎
基礎プログラミング演習 第12回.
プログラミングⅠ 平成30年10月22日 森田 彦.
情報コミュニケーション入門b 第11回 Web入門(2)
コンピュータにログイン 第1章 コンピュータにログイン 啓林館 情報A最新版 (p.6-13)
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
統計ソフトウエアRの基礎.
第1章 いよいよプログラミング!! ~文章の表示 printf~
プログラミング入門 電卓を作ろう・パートI!!.
独習XML ~第1章 XMLの基礎~ 1.1 XML文書の基礎 1.2 XMLとHTML
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
情報コミュニケーション入門e 第12回 Part1 Web入門(2)
標準入出力、変数、演算子、エスケープシーケンス
コンパイラ 2012年10月11日
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
例題のプログラムを通して JavaScriptの仕組みを理解することとします。
JSFによるWebアプリケーション開発 第10回
printf・scanf・変数・四則演算
第5回 配列.
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

RELAX チュートリアル 川口耕介 Swift,Inc.

RELAXって何? XMLの書かれ方・書き方を限定する方法です 例えば、次のようなXMLは許したいけれども… <?xml version=“1.0” ?> <html> <body><br /></body> </html> 次のようなXMLは許したくない時 <?xml version=“1.0” ?> <html> <ボディ><br /></ボディ> </html>

RELAXって何?(2) どのようなXMLはOKなのかの規則を示す方法です XMLの書き方を決める方法です このようなもの全般をスキーマといいます DTD, XML Schema, … XMLの書き方を決める方法です 自然言語よりも厳密に決められます

スキーマを使うと何が嬉しいの? 苦労してスキーマを書く(あるいは、誰かの書いたスキーマを使う)と、次のような良い事があります。 間違いをしてしまった場所、間違いの内容などを教えてもらえます。 正しいXMLはどのように記述されるべきなのかの情報を含んでいるので、それを「読んで」どのようなXMLは正しいのかを知ることが出来ます。 ただし、リファレンスに使えるだけで、チュートリアルには使えません。最初に覚える人向けのわかりやすい解説は別に必要です。 自分が書いたXMLが正しいかどうかを自動チェックできます 文法のリファレンスとして役立ちます

DTDと比べると… RELAX DTD XMLで書ける? ○ × データ型 表現できる文法 DTDより強力 - XMLで書けるので 文法を覚える必要がありません プログラムからも取り扱いが容易です データ型は、文字列の部分にも検証をかける方法です 表現できる文法というのは難しい概念です。 でも、強力な部分は説明しません。

データ型 「データ型」の機能を使うと、書けるテキストデータの種類にも制限を設けられます これはOK これはNG <?xml version=“1.0” ?> <price>1000</price> 自分でデータ型を決めることも出来ます <?xml version=“1.0” ?> <price>xyz</price>

RELAX文法の書き方入門

1.最初の雛型を書く 例:トップレベルにはhtml要素だけがきてよい <?xml version=“1.0”?> <module moduleVersion=“1.0” relaxCoreVersion=“1.0” xmlns=“http://www.xml.gr.jp/2000/relaxCore”> <export> <interface label=“トップレベルにきてよい要素名1” /> <interface label=“トップレベルにきてよい要素名2” /> </export> ここにこれからRELAX文法の中身を書きます </module> おまじないです interface要素は複数書くことも出来ます 例:トップレベルにはhtml要素だけがきてよい <?xml version=“1.0”?> <module …> <export> <interface label=“html” /> </export> … </module>

2.使う要素名を(1つ)決める 例:imgという要素名を使うことにする <tag name=“img” />

3.要素に付随する属性を決める 属性の名前を何にするか 属性は必須なのか省略可能なのか 属性の値はどのようなものなのか 例 何でも良い、数値、URL、文字列、onかoff … 例 src属性は必須、値はなんでもいい height属性は省略可能で、値は正の整数 @requiredを省略すると、falseを指定したのと一緒。 @typeを省略すると、何でもいいことになる。 <tag name=“img”> <attribute name=“src” required=“true” /> <attribute name=“height” type=“positiveInteger” /> … 必要なだけ … </tag>

3'.属性について 値の種類がうまく指定できない場合 指定したいものより広いデータ型を使って妥協します src属性の値はURLのみにしたいんだけど、どうしたらいいの? 頑張ると、ある程度は頑張れます。 でも、とりあえず妥協しておいて後で直すことは簡単です。 でも、妥協しないで頑張ってしまうと、スキーマが出来ません。 +自然言語でコメントを書きます 指定したいものより広いデータ型を使って妥協します 例:奇数だけ→整数を全部許すように妥協 例:URLだけ→文字列を全部許すように妥協

4.タグの中身:総論 タグの中に書けるもの 中身があってはいけない場合 テキストだけの場合 要素だけの場合 要素もテキストも混在する場合 ここが一番難しいところ

中身があってはいけない場合 基本形 例:img要素は中に何をも含んではならない 間違いやすい例 <elementRule role=“親の要素名” type=“emptyString” /> <elementRule role=“img” type=“emptyString” /> なぜnoneでは駄目なのか <elementRule role=“img” type=“none” />

4.1.テキストだけの場合 基本形 p要素の中には文字列を書けます price要素の中には正の整数が書けます 落とし穴:前後に空白が入ってはいけません <elementRule role=“親の要素名” type=“中に入れるデータ型” /> <elementRule role=“p” type=“string” /> pitfallに注意しましょう。この制限は嫌いな人もいるでしょう。 <elementRule role=“price” type=“positiveInteger” /> <price> 10000 </price>

4.2.要素だけの場合 基本形 本当に困ったら <elementRule role=“親の要素名”> 中にどのように要素が現れてよいかの決まり </elementRule> emergency exitがあるので、迷ったらとりあえず妥協しましょう。 後できちんと書き換えればよいのです。 <elementRule role=“親の要素名”> <choice occurs=“*”> <ref label=“子に現れてよい要素名1” /> <ref label=“子に現れてよい要素名2” /> … </choice> </elementRule>

4.3.要素もテキストも混在 基本形 落とし穴:RELAXではできないこと 「要素だけの場合」と一緒です mix要素を使います 次のようなXMLで、値段の中身を数字に限定することができません mixedの説明が抜けてる <?xml version=“1.0” ?> <値段 単位=“円”> 100 <消費税>5</消費税> </値段>

4.3 要素もテキストも混在 基本形 mixedで囲まれた中には、指示した決まりに従っう要素のほかに、任意のテキストがあらわれてもよいことになります <elementRule role=“親の要素名”> <mixed> 中にどのように要素が現れてよいかの決まり </mixed> </elementRule>

5.以上を繰り返し 考えたそれぞれの要素について のステップを繰り返します 名前を決めてtag要素を書く 付随する属性を決めてattribute要素を書く 要素の中身を決めてelementRule要素を書く のステップを繰り返します

子要素の現れ方の指定 基本形 occurs指定 意味 occurs=“?” 省略可能 occurs=“+” 繰り返し現れても良い <ref label=“子要素の名前” /> <ref label=“子要素の名前” occurs=“出現の仕方”/> occurs指定 意味 occurs=“?” 省略可能 occurs=“+” 繰り返し現れても良い occurs=“*” 省略可能でもあり、かつ繰り返し現れても良い

occurs指定 例 このrefに… なし ? + * 空 × ○ P PP PPPP occurs指定なし occurs=“?” <elementRule role=“body”> <ref label=“p” /> </elementRule> なし ? + * 空 × ○ P PP PPPP

子要素の現れ方の指定 最初はこれ、次にこれ、その次は… sequence指定を使います 例:html要素の中身は、まずhead要素で次がbody要素 occurs指定も使えます <elementRule role=“html”> <sequence> <ref label=“head” /> <ref label=“body” /> </sequence> </elementRule>

子要素の現れ方の指定 Aか、Bか、あるいはCか… choice指定を使います 例:img要素か、p要素か、table要素があらわれていい場合 occurs指定も使えます <elementRule role=“html”> <choice> <ref label=“img” /> <ref label=“p” /> <ref label=“table” /> </choice> </elementRule>

RELAXではできないこと 次のような指定はうまくできません どうしてもやりたい人は loginという要素の下には、user要素とpassword要素とdomain要素が必ず一回登場しなくてはいけないが、しかしその順序はどうでもよい <elementRule role=“login”> <choice> <sequence> <ref label=“user” /><ref label=“password” /><ref label=“domain” /> </sequence><sequence> <ref label=“user” /><ref label=“domain” /><ref label=“password” /> <ref label=“password” /><ref label=“user” /><ref label=“domain” /> …

RELAX文法を使う

RELAX文法の使い方 XML文書が文法に沿っているか検査 Verifier 文法のリファレンスとして使います 現在誰かが開発中?

RELAX Verifier for Javaを使う RELAX文法と、XML文書を照合して、間違いがないかをチェックします(validation) 準備 http://www.swiftinc.co.jp/ からVerifierフルセット版をダウンロードします Zipに含まれるverifier.jarファイルをどこかに置きます 準備完了です RELAX文法を書くと、XMLにどのような制限を加えることが出来るか見てみましょう。

RELAX Verifier for Javaを使う 実際に照合してみましょう XML文書が正しく書かれていた場合 C:\>java –jar d:\verifier.jar c:\test.rlx c:\test.xml RELAXモジュールをロードしています XML文書を検証しています XML文書はRELAXモジュールに対して妥当です XML文書が間違っていた場合 RELAXモジュールをロードしています XML文書を検証しています XML文書に違反が見つかりました: コンテントモデルが不正です (3行目19文字目) ここに来る事ができるのは次のどれかです: <p>, endTag

VBRELAXを使う 準備 http://www.geocities.co.jp/SiliconValley-Bay/4639/vbrelax.htm からVBRELAXをダウンロードしてセットアップ http://www.geocities.co.jp/SiliconValley-Bay/4639/relaxws/default.htm を開く エラーが出る場合は、同ページを「信頼済みサイト」に追加するか、標準のセキュリティセッティングを「低」にします

VBRELAXを使う 実際に照合してみましょう XML文書が正しく書けていた場合 XML文書が間違っていた場合 「parse」ボタンを押します XML文書が正しく書けていた場合 「valid」と出ます XML文書が間違っていた場合 エラーメッセージがいろいろ出ます

付録:データ型便覧 型名 意味 string 文字列。要するに何でもよい boolean “true”か“false” NCName XMLのNCName integer 整数“1”や“-195”など double 0.256など emptyString 空文字列“”のみ none 全てが駄目