目次


Ajax をマスターする

第 7 回 要求および応答での XML の使用

効果がある場合、逆効果になる場合を学ぶ

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: Ajax をマスターする

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:Ajax をマスターする

このシリーズの続きに乞うご期待。

今日、XML なしでは有意義なプログラミングを行えないのが現状です。Web ページの設計者が XHTML への移行を検討する場合も、Web プログラマーが JavaScript で作業する場合も、サーバー・サイドのプログラマーがデプロイメント記述子とデータ・バインディングを使う場合も、あるいはバックエンドの開発者が XML ベースのデータベースを調査する場合でも、この拡張マークアップ言語 (XML) はあらゆるところに登場します。そんなわけで、XML が Ajax の根底にあるコア・テクノロジーの一つであると考えられるのも無理はありません。

そのような考えは、Ajax アプリケーションで使用されているコア・オブジェクトの不適切な名前、XMLHttpRequest に影響されたものです。この名前は、オブジェクトが行う技術的な現実以上のことを表しています。つまり、ほとんどの人は XMLHttpRequest オブジェクトは当然、常に XML を使用するものだと思い込んでいるため、XML が Ajax のコア部分であると考えるということです。ですが、それは事実とは異なります。この記事では最初にその訳を説明します。実際、ほとんどの Ajax アプリケーションでは、XML がほとんど登場しないことがわかるはずです。

Ajax では XML に実際に使用されており、XMLHttpRequest でも XML を使用することができます。確かに、XML をサーバーに送信してはならないという理由は何もありません。この連載のこれまでの記事では、プレーン・テキストと名前と値のパラメーターを使ってデータを送信していますが、XML も同じく実行可能なフォーマットです。そこで、この記事では XML を使用してデータを送信する方法を紹介します。さらに重要な点として、なぜ XML を要求フォーマットとして使用できるか、またなぜ、多くの場合において XML を使用するべきではないのかを、説明します。

XML: 本当に存在するのでしょうか

Ajax アプリケーションとその XML の使用は簡単に想定することができます。テクノロジー名 (Ajax) とこのテクノロジーで使用するコア・オブジェクト名 (XMLHttpRequest) にはどちらも XML の使用を示唆しているからです。また、XML という言葉は Ajax アプリケーションとの関連で始終耳にするはずです。ですが、この認識は単なる誤解です。非同期アプリケーションを作成する段階になって、その要素を本当に知りたいと思ったら、この認識が誤っていることを認め、できればなぜ誤っているかを理解する必要があります。

XMLHttpRequest: 不適切な名前と HTTP

テクノロジーにとって最悪の事態の一つとして挙げられるのは、あまりにも人気が高くなったが故に、その基本部分を変更することが不可能になってしまうことです。これこそが、Ajax アプリケーションで使用されている基本オブジェクト、XMLHttpRequest に起こった事態です。このオブジェクトはその名前から、HTTP 要求で XLM を送信したり、あるいは HTTP 要求をある種の XML フォーマットで作成するために設計されているような印象を与えます。名前がどんな印象を与えるにしても、このオブジェクトが実際に行うのは、クライアント・コード (通常は Web ページでの JavaScript) が HTTP 要求を送信できるようにするだけのことです。それ以上のことは何もありません。

理想としては、単純に XMLHttpRequest をもっとふさわしい名前、例えば HttpRequest や、あるいは単純に Request というようなものに変更することです。ただし、現在何百万人もの開発者が Ajax をアプリケーションに投入しており、大多数のユーザーが Internet Explorer 7.0 や Firefox 1.5 などの新しいブラウザー・バージョンに移行するまでには (何十年とまではいかなくても) 何年も、あるいは何十年もかかることは誰にとっても明白であるため、単純に名前を変更するわけにはいきません。結論として XMLHttpRequest という名前を変えることは不可能なので、開発者たちが、その名前が適切でないことを認識するしかありません。

XMLHttpRequest をサポートしない (とくに Windows 上の) ブラウザーを操作する代替策の一つとして有名なのは、Microsoft IFRAME オブジェクトを使用することです。この名前からは、XML や HTTP、あるいは要求でさえもほとんど連想できません。もちろんこのオブジェクトには XML、HTTP、そして要求がすべて関連しますが、このことによって、XMLHttpRequest オブジェクトは XML や HTTP に関するものであるというよりも、ページのリロードを必要としないで要求を行うという点により関わっていることが分かります。

要求は XML ではなく、HTTP です

もう一つのよくある誤解は、舞台裏では XML が何らかの形で使用されていると思うことです。正直に言うと、私自身も同じように誤解していました。このような見解は、このテクノロジーを十分に理解していないことを示します。ユーザーがブラウザーを開き、サーバーから Web ページを要求するときには、http://www.google.com、あるいは http://www.headfirstlabs.com などのように入力します。http:// を含めなくても、アドレス・バーの該当部分にブラウザーが代わって入力してくれます。先頭部分の http:// から、通信がHTTP (Hypertext Transfer Protocol) によって行われることは明らかです。つまり、Web ページにサーバーと通信するためのコードを書き込む際には、Ajax、標準形式の POST、あるいはハイパーリンクのどれを使用しているかに関わらず、HTTP を扱っていることになります。

ブラウザーとサーバー間のほとんどすべての Web 通信が HTTP によって行われるとすると、XML が、XMLHttpRequest が裏で使用する何らかのトランスポートまたはテクノロジーであるという考えは意味を成しません。HTTP 要求で XML を送信することは確かに可能ですが、HTTP は極めて正確に定義された標準で、簡単に消え去ることはありません。要求に XML を明確に使用するか、サーバーが XML で応答を送信するのでない限り、XMLHttpRequest オブジェクトでは従来の HTTP だけが使用されます。今度誰かが「XMLHttpRequest と呼ばれる理由は、これが陰では XML を使用しているからだ」などと言ったら、にっこり笑って、HTTP とは何であるかを辛抱強く説明してあげてください。そして、XML は HTTP で送信できるとしても、データ・フォーマットであって転送プロトコルではないということを教えてあげてください。説明上手になる練習にもなって一石二鳥ですよ。

XML の使用 (実際の場合)

これまで、XML が Ajax で使用されない箇所をすべて説明してきましたが、Ajax の x と XMLHttpRequest の XML はやはり現実のもので、Web アプリケーションでは XML を使用するオプションがいくつかあります。このセクションで基本的なオプションを紹介した後、記事の残りの部分で詳細を掘り下げことにします。

XML のオプション

非同期アプリケーションでは、XML には以下の 2 つの基本アプリケーションがあります。

  • 要求を XML フォーマットで Web ページからサーバーに送信する
  • Web ページでサーバーからの要求を XML フォーマットで受信する

最初のオプション、XML での要求送信では、要求を XML としてフォーマット設定し (API を使用してフォーマット設定するか、あるいは単純にテキストをつなぎ合わせる)、その結果をサーバーに送信する必要があります。このオプションで主要な手作業となるのは、要求を XML の規則でコンパイルし、サーバーが認識できるように構成することです。つまり重要な点は XML フォーマットで、送信したいデータがあれば、XML セマンティクスでラップすればいいだけの話です。この記事の残りの部分では、Ajax アプリケーションでこのように XML を使用する方法について取り上げます。

2 つ目のオプション、XML での要求受信では、サーバーから応答を受け取り、XML からデータを抽出する必要があります (ここでも、API またはそれ以上に強力な手法を使用します)。この場合、重要な点となるのはサーバーからのデータで、XML からは該当データを抽出して、建設的な方法でそのデータを使用するだけのことです。これについては、この連載の次回の記事で取り上げて詳細を説明することにします。

事前の注意

XML の使用方法について詳しく説明する前に、簡潔な注意事項を順に述べると、XML はサイズが小さくない、速くない、スペースを節約しないフォーマットということになります。以降のセクションおよび次回の記事を読むと分かりますが、このコンテキストで XML を使用するもっともな理由や XML がプレーン・テキストの要求と応答よりも優れている点はいくつかあります (とくに応答の場合)。ただし、XML に必要なタグとセマンティックをすべてメッセージに追加することになるため、XML の場合は必ずと言っていいほど、プレーン・テキストより使用するスペースが大きくなり、時間もかかります。

デスクトップ・アプリケーションの如く非常に速いアプリケーションを作成したいという場合、XML はスタート時点として最適であるとは言えません。プレーン・テキストから取り掛かって、特定の XML の必要性が見つかったとしたら、それはそれで素晴らしいことですが、始めから XML を使用すると、ほぼ確実にアプリケーションの応答性が遅くなります。ほとんどの場合は、name=jennifer のように名前と値のペアを使ってプレーン・テキストを送信するほうが、テキストを以下のような XML に変換するよりも時間がかかりません。

<name>jennifer</name>

XML を使用する場合に必要なすべての作業を考えてみてください。テキストを XML にラップする、追加の情報を送信する (実際には要求の一部となる周囲の要素や XML ヘッダーなどは一切含めていないことに注意)、サーバーに XML を構文解析させる、応答を生成する、応答を XML でラップする、ラップした応答を Web ページに戻す、ページに応答を構文解析させて使用させる、という作業が必要になり、時間が余計にかかります。そのため、XML を使用すべき場合を知ることが重要です。ただし、XML によって大抵の場合はアプリケーションの速度が上がるとは決めてかからずに、XML によって柔軟性が追加されると考えてください。この点について、これから説明します。

クライアントからサーバーへの XML

クライアントからサーバーにデータを送信するためのフォーマットとして XML を使用する場合を考えてみましょう。まず、その技術的な方法を紹介してから、XML を使用するのが適切な場合とそうでない場合について詳しく説明します。

名前と値のペアを送信する

Web アプリケーションを作成する場合、十中八九は最終的に名前と値のペアをサーバーに送信することになります。例えば、ユーザーが Web ページ上のフォームにユーザー名とアドレスを入力すると、フォームのデータは以下のようになります。

firstName=Larry
lastName=Gullahorn
street=9018 Heatherhorn Drive
city=Rowlett
state=Texas
zipCode=75080

このデータを単にプレーン・テキストを使ってサーバーに送信するとしたら、リスト 1 のようなコードを使用することになります (これは、連載の第 1 回で使用した例と同様です。「参考文献」を参照してください)。

リスト 1. プレーン・テキストでの名前と値のペアの送信
function callServer() {
  // Get the city and state from the Web form
  var firstName = document.getElementById("firstName").value;
  var lastName = document.getElementById("lastName").value;
  var street = document.getElementById("street").value;
  var city = document.getElementById("city").value;
  var state = document.getElementById("state").value;
  var zipCode = document.getElementById("zipCode").value;

  // Build the URL to connect to
  var url = "/scripts/saveAddress.php?firstName=" + escape(firstName) +
    "&lastName=" + escape(lastName) + "&street=" + escape(street) +
    "&city=" + escape(city) + "&state=" + escape(state) +
    "&zipCode=" + escape(zipCode);

  // Open a connection to the server
  xmlHttp.open("GET", url, true);

  // Set up a function for the server to run when it's done
  xmlHttp.onreadystatechange = confirmUpdate;

  // Send the request
  xmlHttp.send(null);
}

名前と値のペアを XML に変換する

このようなデータのフォーマットとして XML を使用する場合、まず始めに必要なのは、データを格納する基本 XML フォーマットを用意することです。当然、名前と値のペアはすべて XML 要素にできます。ここで、要素名はこのペアの名前の部分、そして要素のコンテンツは値の部分となります。

<firstName>Larry</firstName>
<lastName>Gullahorn</lastName>
<street>9018 Heatherhorn Drive</street>
<city>Rowlett</city>
<state>Texas</state>
<zipCode>75080</zipCode>

もちろん XML で必要なのは、ルート要素、あるいは文書のフラグメント (XML 文書の一部) を扱っている場合はエンクロージング要素です。そこで、上記の XML は以下のように変換できます。

<address>
  <firstName>Larry</firstName>
  <lastName>Gullahorn</lastName>
  <street>9018 Heatherhorn Drive</street>
  <city>Rowlett</city>
  <state>Texas</state>
  <zipCode>75080</zipCode>
</address>

これで、この構造を Web クライアントに作成して、サーバーに送信する準備ができました、と言いたいところですが、まだ完全ではありません。

言葉でのコミュニケーション

XML をネットワークに放り込む前に、データの送信先であるサーバー (そしてスクリプト) が実際に XML を受け入れるかどうかを確認する必要があります。読者のほとんどは当たり前のことにように思うかもしれませんが、駆け出しのプログラマーの多くは、XML をネットワークで送信すれば、正しく受信されて解釈されるものだと頭から決めてかかっています。

実際には以下の 2 つの手順を踏んで、XML で送信するデータが正しく受信されることを確認する必要があります。

  1. XML を送信する対象のスクリプトが、XML をデータ・フォーマットとして受け入れることを確認します。
  2. スクリプトが特定の XML フォーマット、そして送信するデータの構造を受け入れることを確認します。

言っておきますが、上記の手順には人間との対話が必要になります。冗談抜きに、データを XML として送信することが重要事項である場合、ほとんどのスクリプト作成者は好意的になるため、XML を受け入れるスクリプトを見つけるのはそれほど難しいことではないはずです。それでも、使用するフォーマットがスクリプトの期待するものと一致することを確認する必要はあります。例えば、サーバーが以下のようなデータを受け入れるとします。

<profile>
  <firstName>Larry</firstName>
  <lastName>Gullahorn</lastName>
  <street>9018 Heatherhorn Drive</street>
  <city>Rowlett</city>
  <state>Texas</state>
  <zip-code>75080</zip-code>
</profile>

上記のデータは前に記載した XML と似ていますが、以下の 2 つの点が異なります。

  1. クライアントからの XML は address 要素内にラップされていますが、サーバーはデータが profile 要素内にラップされることを期待します。
  2. クライアントからの XML では zipCode 要素が使用されていますが、サーバーは郵便番号が zip-code 要素内にあることを期待します。

大掛かりな計画では、この 2 つの些細な点が、サーバーがデータを受け入れて処理するか、あるいはサーバーが悲惨にもクラッシュして Web ページ、そしておそらくそのユーザーにも不可解なエラー・メッセージをもたらすかの分かれ道となります。そのため、サーバーが期待するものを見極め、送信するデータをそのフォーマットに合わせなければなりません。これを行った上で初めて、クライアントからサーバーに XML を送信するための実際的な手段に取り組む準備ができたことになります。

XML をサーバーに送信する

XML をサーバーに送信する段階になると、実際にデータを送信するよりも、データを取り出してそれを XML にラップするというコーディングに費やす時間のほうが多くなります。サーバーに送信するための XML ストリングの準備ができさえすれば、その送信方法は他のプレーン・テキストの場合とまったく同じです。リスト 2 で、その方法を見てください。

リスト 2. XML での名前と値のペアの送信
function callServer() {
  // Get the city and state from the Web form
  var firstName = document.getElementById("firstName").value;
  var lastName = document.getElementById("lastName").value;
  var street = document.getElementById("street").value;
  var city = document.getElementById("city").value;
  var state = document.getElementById("state").value;
  var zipCode = document.getElementById("zipCode").value;

  var xmlString = "<profile>" +
    "  <firstName>" + escape(firstName) + "</firstName>" +
    "  <lastName>" + escape(lastName) + "</lastName>" +
    "  <street>" + escape(street) + "</street>" +
    "  <city>" + escape(city) + "</city>" +
    "  <state>" + escape(state) + "</state>" +
    "  <zip-code>" + escape(zipCode) + "</zip-code>" +
    "</profile>";

  // Build the URL to connect to
  var url = "/scripts/saveAddress.php";

  // Open a connection to the server
  xmlHttp.open("POST", url, true);

  // Tell the server you're sending it XML
  xmlHttp.setRequestHeader("Content-Type", "text/xml");

  // Set up a function for the server to run when it's done
  xmlHttp.onreadystatechange = confirmUpdate;

  // Send the request
  xmlHttp.send(xmlString);
}

上記のほとんどは見てのとおりで説明の必要はありませんが、注目に値する点がいくつかあります。まず、要求に含まれるデータは、手動で XML としてフォーマット設定する必要があります。DOM ( Document Object Model) の使用方法について 3 回の記事を読んだ後では、多少期待外れだったかもしれません。DOM を使用して JavaScript で XML 文書を作成してはならない理由は何もありませんが、DOM オブジェクトはテキストに変換してから、GET や POST 要求を使ってネットワークに送信しなければなりません。それよりは、単に通常のストリング操作でデータをフォーマット設定したほうが簡単です。もちろんこの場合にはエラーや入力ミスが発生する可能性があるため、XML を処理するコードを作成する際には、特別の注意が必要です。

XML を構成したら、テキストを送信する場合とほとんど同じ方法で接続をオープンします。私が XML に POST 要求を使用することのほうが多い理由は、一部のブラウザーは GET クエリー・ストリングに長さの制限を設けていますが、XML はかなり長くなる場合があるためです。リスト 2 を見ると、GET から POST に適宜切り替えているのが分かります。さらに、POST 要求では、XML は要求する URL の末尾に追加されたパラメーターとしてではなく、send() メソッドによって送信されます。このような違いはあると言っても、いずれも些細なことなので簡単に調整できます。

ただし、以下のまったく新しい 1 行のコードを作成する必要があります。

xmlHttp.setRequestHeader("Content-Type", "text/xml");

わかりにくいコードではありません。このコードは単に、サーバーに従来の名前と値のペアではなく、XML を送信していることを伝えているだけです。いずれにしても、データはテキストとして送信しますが、ここでは text/xml (プレーン・テキストとして送信する XML) を使用しています。名前と値のペアを使ったとしたら、この行は以下のようになります。

xmlHttp.setRequestHeader("Content-Type", "text/plain");

サーバーに XML を送信していることを伝え忘れると問題が発生するため、このステップは忘れないでください。

以上をすべて組み立てたら、あとは send() を呼び出して、XML ストリングに渡すだけです。サーバーが XML 要求を取得すると、(事前の作業が済んでいるという前提で) XML を受け入れて構文解析し、応答を戻します。これでおわかりのように、XML 要求はコードを多少変更するだけのことなのです。

XML の送信: 是か非か

話題を XML 要求から XML 応答に (そしてこの記事から) 移す前に、要求に XML を使用するということについてじっくり考えてみましょう。XML は転送という点で決して最速のデータ・フォーマットではないとは前に述べましたが、他にも考慮する点はたくさんあります。

XML の構成は簡単ではありません

最初に認識しておかなければならないのは、要求で使用するために XML を構成するのはそれほど簡単ではないということです。リスト 2 でもおわかりのように、データは XML のセマンティックによって非常に複雑になりがちです。

var xmlString = "<profile>" +
  "  <firstName>" + escape(firstName) + "</firstName>" +
  "  <lastName>" + escape(lastName) + "</lastName>" +
  "  <street>" + escape(street) + "</street>" +
  "  <city>" + escape(city) + "</city>" +
  "  <state>" + escape(state) + "</state>" +
  "  <zip-code>" + escape(zipCode) + "</zip-code>" +
  "</profile>";

上記はそれほど複雑には見えないかもしれませんが、これは 6 つのフィールドしかない XML フラグメントです。実際に開発する Web フォームには大抵 10 から 15 のフィールドがあります。Ajax をすべての要求に使用するわけではないにしても、これは考慮すべき点です。少なくとも、実際のデータを扱う時間と同じだけの時間を不等号括弧とタグ名に費やすことになり、ちょっとしたタイプミスをする可能性は計り知れません。

もう一つの問題は、すでに述べたように、この XML は手動で構成しなければならないということです。DOM を使用するという選択肢はお勧めできません。DOM オブジェクトを要求として送信することのできるストリングに変換するための適切で簡単な方法がないためです。そのため、手作業でストリングに取り組むのが最善策となります。ただし、この方法は、保守がもっとも難しく、新参の開発者にはもっとも理解しにくいオプションでもあります。この場合は、すべての XML を単一の行にしましたが、何回かのステップでこれを行うと混乱が増すだけです。

XML は要求に何も追加しません

複雑さの問題は別として、XML を要求で使用しても、プレーン・テキストと名前と値のペアに勝る利点はあまりありません。この記事では一貫して、名前と値のペアで送信可能なデータ (リスト 1 を参照) を XML を使用して送信する場合について焦点を絞ってきました。プレーン・テキストでは送信できないけれども、XML で送信できるデータについては一言も触れていません。なぜなら、プレーン・テキストでは送信不可能で XML では送信可能なデータはほとんど皆無だからです。

XML と要求についての結論はまさに、要求で XML を使用せざるを得ない理由はほとんどないということです。この連載の次回の記事では、サーバーがプレーン・テキストでは、はるかに困難なことを XML を使用して実行していますが、これは要求の場合には当てはまりません。XML しか受け入れないスクリプト (実際にはいくつかあります) でない限り、ほとんどすべての要求ではプレーン・テキストを使用するほうが簡単です。

まとめ

Ajax での XML について理解し始めてきた感じがすることでしょう。この記事では、Ajax アプリケーションでは XML を使用する必要はなく、XML はデータ転送の特効薬のようなものでもないことを説明しました。また、Web ページからサーバーへの XML の送信にもかなり慣れてきたはずです。さらに重要なことは、サーバーが確実に要求を実際に処理して応答するには何が必要かもわかったはずです。つまり、サーバーのスクリプトが XML を受け入れ、さらにデータを送信するために使用するフォーマットで XML を受け入れることを確認する必要があるということです。

この記事を読んで、XML が要求のデータ・フォーマットとして最適であるとは限らない理由についても十分理解できたはずです。今後の記事では、XML が役に立つ場合と、ほとんどの要求では XML によって時間も複雑さも増すということを説明する予定です。いつもなら記事で学んだことをすぐに実践してみることを提案しますが、今回は、この記事で学んだことを使用する際には十分慎重になることを提案します。Ajax アプリケーションには XML 要求にふさわしい場所がありますが、その場所は想像するほど大きくはありません。

この連載の次回の記事では、サーバーが XML を使用して応答する方法、そして Web アプリケーションがこれらの応答を処理する方法について説明します。幸いにも、サーバーが Web アプリケーションに XML を戻す理由は、その逆の場合より、はるかに多くあるので、記事で紹介する技術的な詳細は一層実践に役立つはずです。次回の記事まで、とりあえずは、XML が常に素晴らしいアイデアであるとは限らない (少なくとも要求の送信に関しては) ということをしっかり理解してください。XML を要求のデータ・フォーマットとして使用する Web アプリケーションをインプリメントして、これをプレーン・テキストに変換し、どちらのほうが時間もかからず簡単なのかを確かめてみるのも一案です。それでは、また次回の記事でお目にかかりましょう。


ダウンロード可能なリソース


関連トピック

  • XML: 広範な技術に関する記事とヒント、チュートリアル、標準、そして IBM レッドブックについては、developerWorks XML ゾーンを参照してください。
  • xml.com: XML プログラマーとしての経験がまだ浅いという方は、まず、ここにアクセスしてください。XML に関する非常に分かりやすいオンライン資料が用意されています。
  • 「Build dynamic Java applications」(Philip McCarthy 著、developerWorks、2005年9月): Java™ パースペクティブを使って、サーバー・サイドからの視点で Ajax を説明しています。
  • 「Java object serialization for Ajax」(Philip McCarthy 著、developerWorks、2005年10月): Java パースペクティブから、ネットワークでオブジェクトを送信する方法、および Ajax を操作する方法を説明しています。
  • 「Call SOAP Web services with Ajax」(James Snell 著、developerWorks、2005年10月): この非常に高度な記事で、Ajax を既存の SOAP ベース Web サービスに統合する方法を詳細に検討してください。この記事では、Ajax 設計パターンを使用して Web ブラウザー・ベースの SOAP Web サービス・クライアントをインプリメントする方法を紹介しています。
  • World Wide Web Consortium の DOM ホーム・ページ: すべての DOM 関連情報は、ここから探してください。
  • The DOM Level 3 Core Specification: 使用可能なタイプとプロパティーから DOM の使用方法まで、各種言語でコア Document Object Model を定義しています。
  • DOM 用 ECMAScript 言語バインディング: JavaScript プログラマーが独自のコードから DOM を使用する際には、この Level 3 Document Object Model Core 定義の付録を参考にできます。
  • 「Ajax: A new approach to Web applications」(Jesse James Garrett 著、Adaptive Path、2005年2月): Ajax の名前を作り出した記事です。すべての Ajax 開発者の必読書です。
  • 『Head Rush Ajax』(Brett McLaughlin 著、O'Reilly Media、2006年): ここに記載された Head First スタイルのアイデアを吸収してください。
  • 『Java and XML, Second Edition』(Brett McLaughlin 著、O'Reilly Media, Inc.、2001年):XHTML および XML 変換についての著者の考察を読んでください。
  • 『JavaScript: The Definitive Guide』(David Flanagan 著、O'Reilly Media, Inc.、2001年): JavaScript と動的 Web ページの操作について広範に説明しています。次回の改版では、Ajax についての 2 つの章が追加されます。
  • 『Head First HTML with CSS & XHTML』(Elizabeth Freeman、Eric Freeman 共著、O'Reilly Media, Inc.、2005年): 標準 HTML および XHTML と、CSS の HTML への適用方法について詳しく説明しています。
  • IBM トライアル・ソフトウェア: developerWorks から直接ダウンロードできるソフトウェアで、次の開発プロジェクトを構築してください。

コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development, XML, Open source
ArticleID=237347
ArticleTitle=Ajax をマスターする: 第 7 回 要求および応答での XML の使用
publish-date=10102006