SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

今からでも遅くない、JAXPを学ぼう!

今からでも遅くない JAXPを学ぼう!(後編)
XPathとXSLTを掘り下げる

XML文書を他のXML文書に変換する


ダウンロード サンプルコード (3.8 KB)

基本はツリーとノードを理解すること

ノードを整理

 前編で「ノードから構成されるツリー」などという表現を使いましたが、具体的にノードとは何かということについては説明しませんでした。実は、このノードを理解しないとXPath式は書けないと言っても過言ではないのです。まずはノードの種類をXML Path Language (XPath) Version 1.0を参考に次に示します。

ルートノード

 XML文書そのものを指します。ファイルシステムのルートと同じです。ロケーションパス(後述)でも「/」のように記述する点でも似ています。Meigara.xmlのMEIGARASやshop.xmlのSHOPはルートノードの子ノードになる点に注意してください。

要素ノード

 XML文書の要素とノードが同じものを表すと思いがちですが、要素もノードの1つです。

テキストノード

 文字データはグループ化されノードとなります。従ってテキストノードの前後の兄弟ノードにテキストノードは存在しません。

属性ノード

 属性もまたノードになります。要素ノードは関連する属性ノードの親となります。ただし、属性ノードはその要素ノードの子ではありません。

名前空間ノード

 名前空間もまたノードになります。要素ノードは名前空間ノードの親となります。ただし、名前空間ノードはその要素ノードの子ではありません。名前空間ノードでは理解は簡単ですが、属性ノードがなぜ要素ノードの子ではないのか最初は戸惑います。

処理命令ノード

 処理命令もまたノードになります。ただし、文書タイプ宣言内の処理命令は例外です。

コメントノード

 属性、名前空間、処理命令がノードだと言われれば、そういう構造も可能だと受け入れることはできますが、コメントもノードだと言われると少し疑いたくなります。しかし、コメントもまたノードです。

shop.xmlをツリーで表現

 表1のノード一覧を参考に図1にMeigara.xml、図2にshop.xmlをツリー構造として表現しています。見やすいように、MEIGARAの子要素はVOLUMEとPRICEを割愛しています。また、MEIGARA要素も3つ存在しますが、最初の1件のみとしています。

図1.Meigara.xmlのツリー構造
図1.Meigara.xmlのツリー構造
図2.shop.xmlのツリー構造
図2.shop.xmlのツリー構造

 XSLTにおいて空白文字とは、スペース、復帰、改行、タブの4つを指します。従って、ルートノードとMEIGARAS要素ノード(Meigara.xmlの場合)またはSHOP要素ノード(shop.xmlの場合)以外は必ず、空白文字に囲まれています。

次のページ
ロケーションパスを理解

この記事は参考になりましたか?

今からでも遅くない、JAXPを学ぼう!連載記事一覧
この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5155 2010/06/08 23:42

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー