Entering Passive Mode

2006-09 - カテゴリ 'WWW' の記事
< 1 2 3 >

Web サービス

Web サーバが XML によるデータを外部に公開し、
データの形式や、利用(呼び出し)方法を規格化することで、
HTTP を媒介として構造化データの通信が可能となる。
こういう機能は Web サービスと呼ばれる。

ユーザエージェントから Web サーバに、
クエリ文字列や本体を経由してパラメータを渡し、
Web サーバが処理して XML で結果を返す。

基本はこれだけである。

Extensible HTML (XHTML)

XML によって、データの交換が容易になり、
Web サイト間でデータを XML で受け渡し、
それを加工して表示するようなサービスが生まれると、
XML の重要性はますます増してくることになる。

そんな時、新たな問題となってきたのが、
初期の頃から WWW を支えてきた HTML であった。

XML を中心に構築されたシステムでも、
利用者が Web ブラウザで操作する画面を表示する際は、
最終的に HTML を使って表現する必要がある。

XSL #4: テンプレートを書く

いよいよ、テンプレートを書いてみよう。
RSS 2.0 からの変換を行うので、
<channel> と <item> に着目してルールを書くことにする。

元の XML は以下の通り。
http://loafer.jp/mixi/diary/rss.xsp

========== simple.xsl ==========
<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

XSL #3: XPath と組み込みテンプレート

XSLT では、XPath を使って元の XML 文書を処理する。
XPath では、XML 文書の内容を「ノード」に分解し、
「ノード」全てを 1 つの大きな階層構造として取り扱う。

XML の要素だけでなく、テキストや、コメント、
そして属性や処理命令なども全てノードとして扱われる。
ノードは階層構造となり、最上位のノードは、
仮想的なノードである「ルートノード」である。
XML の文書要素はルートノードの子供ノードとなる。

    <root>
        <p align="center">
          テキストも<em>ノード</em>として扱います。
        </p>
    </root>
    <?apply href="footer.xml" ?>

XSL #2: XSLT の枠組み

では、XSLT を書いてみよう。

XSLT は XML 適合文書なので、見た目は XML である。
では、XSLT の基本的な枠組みを作ってみる。
これは、XML を HTML に変換する例である。

========== default.xsl ==========
<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>

XSL #1: 元の XML を用意する

さて、実際に XSL を試してみよう。

まず変換元の XML 文書を用意する必要がある。
適当に簡単なものを生成してもよいのだが、
ここでは、少しは実用的なものを題材にしてみよう。

ということで、以下の RSS 2.0 をサンプルとして利用する。

http://loafer.jp/mixi/diary/rss.xsp

RSS は、Web サイトの概要を表現した XML 適合文書だ。
RSS を利用すれば、Web サイトの更新情報を、
他の Web サイトから取得して連動させたり、
プログラム的に処理したりすることができる。

Extensible Stylesheet Language (XSL)

XML は、1998 年あたりから急激に発展する。

DOM が出現したことで、プログラマは、
厄介であった XML や HTML の文法解析から解放され、
さらに、Dynamic HTML を併用した、
新世代の Web プログラミングが可能となった。

DOM は、Web ブラウザの組み込み機能だけにとどまらず、
C++ や Java など、多彩な言語でその実装が開発され、
ASP や JSP などでも利用することができた。
そのため、XML はサーバ側の汎用データ形式としても、
利用の機会が増えてくることになる。

DOM を使ってみる

DOM を使って、HTML の一部を動的に生成してみよう。
HTML 文書自身を JavaScript を使って書き換える。
DOM による Dynamic HTML のテストという感じだ。

========== dom-test.html ==========
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<title>DOM test</title>
<script type="text/javascript">
<!--

Document Object Model (DOM)

XML は、テキスト形式のデータ表現であるため、
それをプログラムで取り扱うためには、
タグや属性の構文解析が必要となる。

また、XML は要素や属性を自由に定義できるため、
プログラムで XML をデータとして利用する場合、
構文解析した XML を、何らかのデータ構造として、
プログラム独自のデータ構造に加工する必要がある。

例えば、C 言語であれば構造体だろうし、
Perl であれば連想配列だろう、
また、Java や C# では、専用の値クラスになるだろう。

Extensible Markup Language (XML)

CSS や Dynamic HTML と発展する中、
HTML の役割も少しずつ変化してくる。

HTML は文書の作成者が作成するだけではなく、
Dynamic HTML を使って動的に操作可能になったことで、
HTML は Web ブラウザにおける GUI を表現するための
フレームワークとしての役割を持つようになる。

このように、HTML が注目を浴びるようになった中、
HTML を汎用表現として使えないかという議論が生まれた。

< 1 2 3 >
このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS