プログラミング基礎
II
第二回 (2006年10月
2日)
XML の木構造、名前空間
http://www.sw.it.aoyama.ac.jp/2006/PB2/lecture2.html
Martin J. Dürst
duerst@it.aoyama.ac.jp
O 棟 529号室
© 2006 Martin
J. Dürst 青山学院大学
目次
- 先週のまとめ・演習・宿題
- Moodle への登録
- XML の復習
- XML の木構造
- 名前空間
- 演習
先週のまとめ
- XSLT は XML の変換のための宣言型プログラム言語
- XSLT も XML で書かれる
- XSLT は1999年の W3C の勧告
- XSLT の処理には四つの部分がある:
- XML データ入力ファイル
- 変換指定ファイル (XSLT)
- XSLT プロセッサ
- 出力 (ファイルなど)
<xsl:output>
要素によって出力の制御が可能
先週の演習・宿題
演習 1: msxsl のインストール
演習 3: データの変更
- データファイル
hello.xml
内のデータを変更する。再度 XSLT で処理する。
- 新しいデータファイルを用意し、それも変換する。
- 例: 挨拶を「こんばんは」などにする (
hello2.xml
)。
先週の演習 2: 出力の修正
hello.xsl
に
<xsl:output>
を付けて、様々な文字符号化を使ってみる。
- コマンドプロンプトへの出力には
Shift_JIS
が必要
- notepad2 で見るためには
UTF-8
が最適
- スタイルシートの修正で出力を HTML から XHTML
に変えてみる (前期の資料参照)。
- 結果の一例: hello2.xsl
先週の次回のための準備
コマンドプロンプトの簡単な使い方
主なコマンド:
dir
現在いるディレクトリのファイルを表示
mkdir example
新しいディレクトリ
(名前が example) を作成
cd example
サブディレクトリ (名前が
example) へ移動
cd ..
一つ上のディレクトリへ移動
msxsl data.xml transform.xsl
XSLT
変換、結果を画面に表示
msxsl data.xml transform.xsl > output.xml
XSLT
変換、結果を output.xm
l のファイルに
Moodle への登録
Moodle はオープン・ソースの電子学習支援システム
登録の種類:
- 前期からパスワードを覚えている学生:
「ログイン」からコースの登録
- パスワードを覚えてない、又は新規で、情報テクノロジーの学生
「パスワードを忘れました?」からコースの登録
- その他新規の学生:
「新しいアカウントを作成する」からコースの登録
新しいアカウントの作成
新規アカウント記入項目
- ユーザ名: 必ず学生番号 (八桁)
を使う
- パスワード:
自分だけしか分からないものにする。必ず忘れないように!
- メールアドレス:
必ずウェブメールアドレス (...@cc.aoyama.ac.jp)
にする。
- 名・姓: 漢字の実名にする。
記入が終わったら「アカウントの作成」のボタンを押す。
しばらくするとウェブメールに確認のメールが来る。
確認のメールに一つ入っているリンクをクリックするとユーザ登録の確認が完成。
パスワード忘れの場合
トップページの右側の「パスワードを忘れました?」を使って、新しいポスワードを自分のウェブメールに送信してもらう。
無意味で覚えにくいパスワードになるのでパスワードの変更を行う。
ログイン後ページの最上の「あなたは
だれだれ
としてログインしています。」の「だれだれ」を選ぶと自分のプロフィルのページに来る。下の方に「パスワードの変更」のリンクがある。
コースの登録
アカウントを作成したら、
次に「青山スタンダード」の下の「プログラミング基礎
II」を選択
次のページに登録キーのところに「BasicXSLT2」を入力
注意: 履修登録も Moodle
でのコースへの登録も単位取得の前提
XML の復習: 基礎の概念
- XML 文書の主に要素 (element) からできている
- 要素は開始タグ (start tag, 例:
<element>
)、内容、終了タグ (end tag, 例:
</element>
) からなる
- 要素の開始タグには属性 (attribute) がありうる (例:
<element 属性名='属性値'>
)
- 要素と属性の他にコメント (comment, 例:
<!--
コメント -->
), 処理命令 (processing instruction, 例:
<?pi ....?>
) 等がある
XML の復習: 間違え探し
前期の期末試験の第六問: errors.xml
XML の木構造
- XSLT
は内部的に全てのデータや命令を木構造で扱っている
- 情報テクノロジーの「木」(tree)
の場合、根が上で、下へ延びて枝分かれをする
- 枝と結ばれているところは「節」(node,
ノード)、終端のところは「葉」 (leaf) と呼ばれる
XSLT の節の種類
- ルートノード (root node): XML 文書全体に相当
- 要素ノード (element node): 各要素に相当
- テキストノード (text node):
要素内部のテキストに相当
- コメントノード (comment node): コメントに相当
- 処理命令ノード (processing instruction node):
処理命令に相当
- 属性ノード (attribute node): 属性に相当
- 名前空間ノード (namespace node):
名前空間の情報に相当
XML の名前空間の目的
(名前空間: name space)
- 世界中に沢山の XML 形式・応用がある
- 要素名・属性名がダブることもありうる
- 複数の XML 形式を組み合わせたい場合もある
- 要素名などを世界的規模で識別できる仕組みが必要
- これは名前空間である: 要素や属性にウェブアドレス
(URI/IRI) をつける
- ウェブアドレスが長いので、要素や属性ごとのではなくまとめて設定したい
名前空間の仕組み
- ある要素の
xmlns
や xmlns:hoge
の属性の属性値に名前空間 URI を指定
- 以下に変更がない限り、その要素や要素の内容全部でこの名前空間が適用される
名前空間の用語
- 名前空間 URI: Namespace URI (例:
http://www.w3.org/1999/XSL/Transform
)
- 修飾名 (しゅうしょくめい): qualified name (例:
xsl:transform
)
- (名前空間) 接頭辞 (せっとうじ): (namespace) prefix (例:
xsl
)
- ローカル部: local part (例:
transform
)
- デフォルト名前空間: default namespace
(接頭辞がない名前空間)
XSLT での名前空間
- 役割: XSLT の指示と出力用のデータの区別
- 名前空間ノードは接頭辞が使える全ての要素につく
- 接頭辞が保証されていないが、大体そのまま出力される
演習 1: 名前空間の変更
- ある XSLT の
xsl
接頭辞を別のものに変更し、実行してみる
- ある XSLT の XSLT 名前空間を変更し、実行してみる
演習 2: データの準備
- 必ず例と同じ
DOCTYPE
を使って、文字符号化を UTF-8 にする
- Extended File
Upload を使う(http://validator.w3.org/file-upload.html)
- 検証したいファイルを「参照...」ボタンで選ぶ
- 「Encoding」を「utf-8 (Unicode, worldwide)」に設定する
- 「Validate this file」ボタンで検証する
- 検証の結果で「Missing "charset" attribute for "text/xml"
document.」とか「Character Encoding Override in
effect!」を無視して、結果のページの下の方に大きく「This
Page Is Tentatively
Valid」とあると検証が成功した。
次回のための準備
- 演習の完了
- 演習 2 をMoodle にアップロード (10月 8日23:55必着)