プログラミング基礎 II: ミニテスト ・ 2006 年 11 月 27 日 3 時限 ・ ページ

氏名 青山 太郎     学部・学科 理工・情テク     学生番号 12345678      

XSLT で使われる七つのノードの種類を列挙し、簡単に説明しなさい。 (14 点)

ルートノード。XML 文書全体に相当します。

要素ノード。一つの要素に相当します。

属性ノード。一つの属性に相当します。

コメントノード。コメントを表します。

処理命令ノード。処理命令を表します。

テキストノード。要素の内容の文書を表します。

名前空間ノード。要素に見える名前空間情報を表します。

次の XSLT における概念に相当する日本語の用語と簡単な説明を記述しなさい (10 点)

relative path
相対パス。現在のノードを基準とするパス。
predicate
述語。ステップに条件をつけ、対処ノードを減らせる。
template
テンプレート、雛形。あるマッチしたノード (主に要素) に対し、どのものを出力するのかの指定を行う。
(namespace) prefix
(名前空間) 接頭辞。名前空間を区別するために要素名などに付けられる。例: xsl:template の xsl.
default namespace
デフォルト名前空間。接頭辞の無い名前空間。

次の XML 文書を木で表しなさい。 (12 点)

(ヒント: 空白や改行だけの部分は無視してよい。)

<?xml version='1.0' encoding='utf-8'?>
<!-- Start -->
<?doit something ?>
<many count='12'>
  <one/>
  <two>two, 2, 二</two>
  <three><one/><two/><three/></three>
</many>
ルート
  ┣コメント: Start
  ┣処理命令: doit: something
  ┗要素: many
    ┣属性: count: 12
    ┣要素: one
    ┗要素: two
    ┃ ┗テキスト: two, 2, 二
    ┗要素: three
      ┣要素: one
      ┣要素: two
      ┗要素: three

プログラミング基礎 II: ミニテスト ・ 2006 年 11 月 27 日 3 時限 ・ ページ

XSLT 変換の二つの呼び出し方を例を使って簡単に説明しなさい。 (10 点)

コマンドプロンプトによる呼び出し。例えば msxsl を使うとその後データファイルの名前と変換ファイルの名前を書きます。例:
Z:\XSLT>msxsl bookdata.xml pricelist.xsl

xml-stylesheet 処理命令による呼び出し (IE に限る)。データファイルの頭に例えば次の行を書く:
<?xml-stylesheet type='text/xsl' href='pricelist.xsl'?>

次の XPath の式において、それぞれどの様なノードを選択するのかを書きなさい。 (30 点)

/
ルートノード
/students
ルートの直下の students 要素。
/students/student
ルートの直下の students 要素の直下の全ての student 要素。
/students/student[2]
ルートの直下の students 要素の直下の二番目の student 要素。
/students/*
ルートの直下の students 要素の直下の全ての要素。
/students/*[2]
ルートの直下の students 要素の直下の二番目の要素。
student
現在のノードの直下の全ての student 要素。
@number
現在のノードの number 属性。
student/@number
現在のノードの直下の全ての student 要素の number 属性。
student[@number]
現在のノードの直下の number 属性のある全ての student 要素。
student[@number='12345678']
現在のノードの直下の number 属性が 12345678 である全ての student 要素。
student[@faculty='文学部' and @age>20]
現在のノードの直下の faculty 属性が「文学部」で、age 属性が20より大きい全ての student 要素。
.//student
現在のノード以下の全ての student 要素。
parent::*
現在のノードの親ノード。
following-sibling::text()
現在のノードの「弟妹」の中のテキストノード。

XSLT においての mode の仕組みを説明しなさい。 (14 点)

モードは同じデータを複数回使いたいときに使うものです。<xsl:apply-templates> で mode 属性を指定していると、 mode 属性が同じ <xsl:template> だけが使われるようになります。それによって、例えば二つの <xsl:apply-templates> を使って、同じデータをリストの形と表の形で出力できます。片方のは mode 属性なし (既定値 mode) でもよい。 典型例は論文、本などの目次と本文を同じ入力から作ることです。