・   「Java/XML入門」実習 第7回

XPath

XPathの機能を実装したサンプルを作成します。


・ 準備1(学内向け):
マシンを立ち上げ、UNIX(Linux)かWindowsのいずれかの環境でログインしなさい。
端末エミュレータのウィンドウ(kterm もしくは Cygwin)を開き、 そこで以下の作業をしてください。

・ 準備2:
この後のプログラムの処理の対象となる適当なXMLファイルを用意しておきます。 sample15.xml,


・ 基本課題1:「XPathのパッケージの利用」

  1. ソースファイル XPathTest.java を作成し、コンパイルしなさい。
  2. コマンドラインの引数に XPathのパターンの文字列と XMLのファイル名を与えて、 どんな処理結果が出るか調べなさい。
  3. どのような出力が出るか調べ、その理由を考えなさい。

・ 基本課題2:「XPathのパッケージの利用(2)」
発見したパスの情報を「絶対パス」の形式で、 きれいに表示するように改良してみましょう。

  1. ソースファイル XPathTest2.java を作成し、コンパイルしなさい。
  2. コマンドラインの引数に XPathのパターンの文字列と XMLのファイル名を与えて、 どんな処理結果が出るか調べなさい。
  3. どのような出力が出るか調べ、その理由を考えなさい。

・ 基本課題3:「さまざまなパターンの実験」

  1. 課題2のサンプルと sample15.xml のように深い階層構造を持つ文書に対して、 XPathのいろいろなパターンを与えて、結果を調べてみなさい。 (なお、多くのパターンの記号 *, ' , | などは UNIXのシェルで特別の意味を持つので、 引数に指定する場合には、""で囲ってください。)

java  XPathTest2  "//Esashi"  sample15.xml
java  XPathTest2  "/world/*"  sample15.xml
java  XPathTest2  "//Souya/*"  sample15.xml
java  XPathTest2  "//*[@college]"  sample15.xml
java  XPathTest2  "//*[@omiyage]"  sample15.xml
java  XPathTest2  "//*[@omiyage='kegani']"  sample15.xml
java  XPathTest2  "//*[@*='wakhok']"  sample15.xml
java  XPathTest2  "//*[string-length(name())=8]"  sample15.xml
java  XPathTest2  "//Rishiri | //rishiri"  sample15.xml
java  XPathTest2  "//Rishiri/parent::*"  sample15.xml

・ 基本課題4:「属性の表示」

  1. Nodeクラスのタグ情報だけではなく属性情報もきちんと表示するように、 サンプルを改良し、XPathTest3 としなさい。

・ レポート課題:
ここまでの課題が終わった人は、下記の項目を tatsuo宛のメール で報告しなさい。 Subject(件名):は java7 としてください。

  1. パターン "//Fujimi/" を与えて sample15.xml を調べた時の出力結果