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

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

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

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

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

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

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

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

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

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

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

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

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

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

<?xml version='1.0' encoding='utf-8'?>
<!-- Start -->
<?process quickly ?>
<All age='5'>
  <One/>
  <Two>two, 2, 二</Two>
  <Three><One/><Two/></Three>
</All>
ルート
  ┣コメント: Start
  ┣処理命令: process: quickly
  ┗要素: All
    ┣属性: age: 5
    ┣要素: One
    ┗要素: Two
    ┃ ┗テキスト: Two, 2, 二
    ┗要素: Three
      ┣要素: One
      ┗要素: Two

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

XSLT の出力を制御する <xsl:output> 要素の書き方と機能を説明しなさい。 (10 点)

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

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

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

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

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

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