青山学院大学

後期試験 ・ 2008 年 1 月 28 日 3 時限実施 ・ ページ

授業
科目
プログラミング基礎 II 学生番号 学科 学年 フリ
ガナ
  評点
                        氏名    
担当者 DÜRST, Martin J.

用語の説明 (16 点)

次の XSLT 関連の英語の用語に相当する日本語の用語を書いて、簡単に説明しなさい。

node
ノード; XSLT 内部で XML が木の形で処理されるときのその木の一節。七種類ある。
predicate
述語; XPath で選択するノードを制限できる機能。[] ないに書く。
node test
ノードテスト; XPath でノードの種類又は名前をチェックする機能である。
string
文字列; 文字の羅列である。
node set
ノードセット; パターンの選択などによってノードの順番付き集合である。
axis
軸; XPath の一つのステップにおいてどの「方向」に向けてノードを割り出すのかの指定
step
ステップ; XPath の一部で、軸、ノードテスト、述語からなる
node test
ノードテスト; XPath ステップの一部で名前や種類でノードを選択するところ

XSLT の要素の説明 (16 点)

次の XSLT の要素の機能や役割を簡単に説明しなさい。

<xsl:variable>
変数を定義したいときに使う
<xsl:template>
出力のための雛形
<xsl:apply-templates>
雛形を適用したいときに使う
<xsl:value-of>
何かの式 (XPath) の値を出力したいときに使う
<xsl:if>
条件をテストして、合ったら要素の内部を使う。
<xsl:choose>
処理を複数に分類したい場合に使う。中に <xsl:when>, <otherwise> を使う。
<xsl:when>
<xsl:choose> 内に使う。条件をテストし、最初にテストが成功するところをやる。
<xsl:otherwise>
<xsl:choose> 内に全ての <xsl:when> に当たらなかったら使われる。

後期試験 ・ 2008 年 1 月 28 日 3 時限実施 ・ ページ

変換とスタイルシート (8 点)

XSLT の変換ファイルはよく「スタイルシート」とも呼ばれている。その理由と背景を説明しなさい。

元々 XSLT の最初の目的は表示用に XML ファイルを色々変換することでした。 表示用だからスタイルシートの役割です。 表示のための様々な変換は表示と関係ないデータ変換でも使えるということなので、一般的には 「変換ファイル」と言った方が妥当です。 XSLT のトップの要素も <xsl:transform> でも <xsl:stylesheet> でもいいです。

キャッチボール (8 点)

XSLT の処理で行われるキャッチボールを具体的 (要素名など) に説明しなさい。

XSLT の処理は主に、<xsl:apply-templates> 要素で match される木のノードがボールとして投げられ、変換ファイルの中での <xsl:template 要素がこのようなボール (複数も可) をキャッチして処理するによって行われる。

ノードの種類 (21 点)

XSLT で使われる XML 木のノードの種類を列挙し、 それぞれについて、入力でどうマッチするのか、どうやって出力するのかを下記の表に記入しなさい。

ノードの種類 入力 出力
ルートノード XPath で / で 自動的
要素ノード XPath で要素名で <xsl:template 内に記述
属性ノード @属性名で 出力の要素に; <xsl:attribute> で
コメントノード comment() ノードテストで <xsl:comment> で
処理命令ノード processing-instruction() ノードテストで <xsl:processing-instruction> で
名前空間ノード 要素名の接頭辞など 要素に xmlns:接頭辞 属性
テキストノード text() ノードテストで <xsl:template>内のテキスト

宣言型プログラミング言語 (8 点)

XSLT は「宣言型プログラミング言語」と呼ばれている。なぜなのか説明しなさい。

宣言型プログラミング言語は入力に対する条件とそれによる結果だけ指定すればいい言語である。 それ以上細かいこと、例えば処理の順番などは指定しなくてよい。XSLT はまさにその様に、 XPath で条件を指定し、<xsl:template> の内容で出力を指定しますので、宣言型言語である。

文字化け (8 点)

コマンドプロンプトで msxsl を実行したらエラーにはならなかったが、出力が文字化けした。 原因と対策をできるだけ詳しく説明しなさい。

エラーがでなかったので、入力には文字コードの問題が無い可能性が高いです。msxsl は何も指定しないと出力が UTF-16 になる。コマンドプロンプトでみるには出力を Shift_JIS にしないといけない。変換ファイルの最初の方に <xsl:output を追加し、その中で encoding 属性の値を Shift_JIS にした方がいい。

青山学院大学

後期試験 ・ 2008 年 1 月 28 日 3 時限実施 ・ ページ

授業
科目
プログラミング基礎 II 学生番号 学科 学年 フリ
ガナ
  評点
                        氏名    
担当者 DÜRST, Martin J.

XSLT の共通の属性 (12 点)

XSLT には複数の要素に出てくる属性がいくつかある。次の表に、その行の要素にその欄の属性が使われる場合には「○」、そうでない場合には「×」と記入しなさい。

name test mode select
<xsl:for-each> × × ×
<xsl:if> × × ×
<xsl:attribute> × × ×
<xsl:param> × ×
<xsl:call-template> × × ×
<xsl:sort> × × ×
<xsl:variable> × ×
<xsl:when> × × ×
<xsl:with-param> × ×
<xsl:apply-templates> × ×
<xsl:template> × ×
<xsl:value-of> × × ×

XPath の書き方 (14 点)

次のそれぞれのノードを選択するような XPath を書きなさい。

ルートノード
/
ルートノード直下の students 要素
/students
ルートノード直下の students 要素の直下の student 要素全て
/students/student
上記と同様が、に番目の student だけ
/students/student[2]
現在のノードの直下の student 要素の faculty 属性
student/@factulty
現在のノードの直下の faculty 属性のある student 要素
student[@factulty]
現在のノードの直下の faculty 属性の値が economy の student 要素
student[@factulty="economy"]

授業で情報テクノロジー一般について習ったこと (8 点)

授業で XSLT そのものについてではなく、情報テクノロジー一般について自分に勉強になったことについて書きなさい。 (具体的なものでなくて、印象でもよい。)

[例題: プログラムは正確に書くのが難しい。
プログラム言語は思ったより色々あります。
自動かには繰り返しと枝分かれが大切。]