プログラミング基礎
II
第二回
(2007年10月22日)
XML の木構造、名前空間
http://www.sw.it.aoyama.ac.jp/2007/PB2/lecture2.html
Martin J. Dürst
duerst@it.aoyama.ac.jp
O 棟 529号室
© 2006-7 Martin
J. Dürst 青山学院大学
目次
- 先回のまとめ・演習・宿題
- Moodle への登録
- XML の復習
- XML の木構造
- 名前空間
- 演習
先回のまとめ
- XSLT は XML の変換のための宣言型プログラム言語
- XSLT も XML で書く
- XSLT 1.0 は1999年の W3C の勧告
- XSLT の処理には四つの部分がある:
- XSLT プロセッサ (例: msxsl)
- XML データ入力ファイル
- 変換指定ファイル (XSLT)
- 出力 (ファイルなど)
<xsl:output>
要素によって出力の制御が可能
先回の演習 2: 出力の修正
hello.xsl
に
<xsl:output>
を付けて、様々な文字符号化を使ってみる。
- コマンドプロンプトへの出力には
Shift_JIS
が必要
- notepad2 で見るためには
UTF-8
が最適
- スタイルシートの修正で出力を HTML から XHTML
に変えてみる (前期の資料参照)。
- 結果の一例: hello2.xsl
先回の演習 3: データの変更
- データファイル
hello.xml
内のデータを変更する。再度 XSLT で処理する。
- 新しいデータファイルを用意し、それも変換する。
- 例: 挨拶を「こんばんは」などにする (
hello2.xml
)。
先回の次回のための準備
コマンドプロンプトの簡単な使い方
主なコマンド:
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」を選択
次のページに登録キーのところに「XSLT-Standard」を入力
注意: 履修登録も Moodle
でのコースへの登録も単位取得の前提
XML の復習と木構造
- XML の間違え探し
- XML の基礎概念
- XML の木構造
- XML 木構造の書き方
- XSLT の節の種類
XML の間違え探し
前期の期末試験と似た問題: errors.xml
XML の基礎概念
- XML 文書は主に要素 (element) からできている
- 要素は開始タグ (start tag, 例:
<element>
)、内容、終了タグ (end tag, 例:
</element>
) からなる
- 要素の開始タグには属性 (attribute) がありうる (例:
<element 属性名='属性値'>
)
- 要素と属性の他にコメント (comment, 例:
<!--
コメント -->
), 処理命令 (processing instruction, 例:
<?pi ....?>
) 等がある
XML の木構造
- XSLT
は内部的に全てのデータや命令を木構造で扱っている
- 情報テクノロジーの「木」(tree, ツリー) の場合、根
(root, ルート) が上で、下へ延びて枝分かれをする
- 枝の両端は「節」(node, ノード) と呼ばれる
- 終端のところは「葉」 (leaf) と呼ばれる
XML 木構造の書き方
- 節ごとに三つの項目:
- 節の種類
- 節の名前 (又は空)
- 節の内容 (又は空や *)
- 節の例その 1:
- 節の例その 2:
空白ノードの扱い方
- 表示を分かりやすくするために空白 (改行を含む)
が使われる
- この空白もテキストノードとして木構造の一部になる
- 空白ノードが多いため、書かない場合もある
XSLT の節の種類
- ルートノード (root node): XML 文書全体に相当
- 要素ノード (element node): 各要素に相当
- テキストノード (text node):
要素内部のテキストに相当
- コメントノード (comment node): コメントに相当
- 処理命令ノード (processing instruction node):
処理命令に相当
- 属性ノード (attribute node): 属性に相当
- 名前空間ノード (namespace node):
名前空間の情報に相当
XML の名前空間
- XSLT での名前空間の例
- XML の名前空間の目的
- 名前空間の仕組み
- 名前空間の用語
- XSLT での名前空間
XSLT での名前空間の例
前回使った例: hello.xsl
一部の要素名に xsl:
がついている
xmlns:xsl
の名前の属性がある
名前空間の目的
(名前空間: name space)
- 世界中に沢山の XML 形式・応用がある
- 要素名・属性名がダブることもありうる
例: <title>
: 肩書き? 本の題目? 権利証書?
...
- 複数の XML 形式を組み合わせたい
- 要素名などを世界的規模で識別できる仕組みが必要
- これは名前空間である: 要素や属性にウェブアドレス
(URI/IRI) をつける
- ウェブアドレスが長いので、要素や属性ごとのではなくまとめて設定したい
名前空間の仕組み
- ある要素の
xmlns
や xmlns:hoge
の属性の属性値に名前空間 URI/IRI を指定
- 以下に変更がない限り、その要素や要素の内容全部でこの名前空間が接頭辞なしもしくは
hoge
の接頭辞で使える
名前空間の用語
- 名前空間 URI/IRI: Namespace URI/IRI (例:
http://www.w3.org/1999/XSL/Transform
)
- 修飾名 (しゅうしょくめい): qualified name (例:
xsl:transform
)
- (名前空間) 接頭辞 (せっとうじ): (namespace) prefix (例:
xsl
)
- ローカル部: local part (例:
transform
)
- デフォルト名前空間: default namespace
(接頭辞がない名前空間)
XSLT での名前空間
- 役割: XSLT の指示と出力用のデータの区別
- 名前空間ノードは接頭辞が使える全ての要素につく
- 接頭辞の値が保証されていない
例: 入力の hoge
の接頭辞は出力で
hage
に代わる
- 保証がなのに接頭辞は大体そのまま出力される
演習 1: 名前空間の変更
- ある XSLT 変換ファイルの
xsl
接頭辞を別のものに変更し、実行してみる
- ある XSLT 変換ファイルの XSLT
名前空間を変更し、実行してみる
どちらか処理が成功した方を Moodle
にアップロードしなさい (10月28日 (日) 22:00 必着)
演習 2: 木構造から XML 文書への変換
配布された木構造から XML 文書を作りなさい
配布された木構造には空白ノードが無いが、XML
文書として読みやすい様に改行、字下げを追加しなさい
Moodle にアップロードしなさい (10月28日 (日) 22:00
必着)
次回のための準備
- 演習の完了
- 演習 1 と 2 をMoodle にアップロード (10月28日 (日) 22:00
必着)