Firefox 1.5でのXML、第1回:XML機能の概要

急成長しているWebブラウザーの新しいXML機能を探る

オープン・ソースのWebブラウザーFirefoxの人気が高まっています。ユーザーは、Firefoxのセキュリティー機能と便利な機能が気に入っています。開発者は、Firefoxが、ルーツであるMozillaから継承した標準準拠の姿勢が気に入っています。最新バージョンのFirefox 1.5(現時点ではベータ)には、XML解析、XHTML、CSS、XSLT、SVG、JavaScriptTMでのXMLイベント、XFormsなど、XML開発者向けの多くの機能が含まれています。追加のサード・パーティー拡張では、さらに多くのXMLサポートが提供されています。この記事では、Uche OgbujiがFirefox 1.5のXML機能の概要を解説します。

Uche Ogbuji, Principal Consultant, Fourthought, Inc.

Photo of Uche OgbujiUche Ogbuji は、次世代の Web 技術を専門とするサービスの会社である、Uli, LLC の代表者です。Ogbuji 氏は XML、RDF、およびナレッジ管理アプリケーション用のオープン・ソース・プラットフォームである 4Suite の開発リーダーであり、Versa RDF 照会言語の開発リーダーでもあります。ナイジェリア出身のコンピューター・エンジニア兼ライターで、米国コロラド州ボールダー在住です。彼に関して詳しくは、彼のブログである Copia を見てください。



2005年 9月 20日

Firefoxは比較的新しいWebブラウザーであり、Mozillaプラットフォームに基づくブラウザーの中では最も人気があります。驚くべき成長を遂げ、オープン・ソースのソフトウェアとしての華々しいサクセス・ストーリーを持つFirefoxですから、読者もおそらくその名を聞いたことがあるでしょう。すでに、あなたのお気に入りのWebブラウザーになっているかもしれませんね。私のように。IBMは、今年前半、社員にFirefoxの使用を奨励し、同社のヘルプ・デスクでFirefoxサポートを開始したことで話題になりました。また、IBMは、Lotus® Domino®など、同社の製品ライン全体を通じてFirefoxサポートを強化しました。このように著名なIT企業が示した信頼に影響されて、他の企業でもFirefoxを社内標準にする動きが出てきました。

Firefoxの長所の1つは、Mozillaから多くのXML機能を継承していることです。これらの機能の多くは、これまでMozilla(およびFirefox)で部分的または試験的に提供されてきましたが、Firefoxの次のメジャー・リリース、正式にはバージョン1.5(および開発中のコード名Deer Park)では、XML機能の数と質で大きく躍進します。Firefox 1.5は、XML開発者向けのすばらしいWebブラウザーになるとみられ、Webでの普及が遅れているクライアント・サイドのXML機能の採用を加速するでしょう。忘れてならない重要なことは、現在のWebテクノロジーの開発の多くは、Firefoxブラウザー機能の開発も含めて、Webブラウザーを単なるインターネット閲覧ツールではなく、特殊なアプリケーション開発のための完璧なプラットフォームにしつつあるということです。XMLは一般に、これらの技術開発(一部のコメンテーターはWeb 2.0と呼んでいます)に重要な役割を果たしています。

このシリーズでは、現行のFirefox 1.0と次のFirefox 1.5のさまざまなXML機能について解説します。第1回では、これらの機能の概要を示します。実験と開発のためにDeer Parkのコピーを入手したい方は、参考文献を参照してください。

概要

初期のWebブラウザーNCSA Mosaicの時代から、ブラウザーの役割はWebページを構成しているさまざまなファイルを取得して、それらをユーザー表示用にまとめることでした。このようなファイルの最も一般的な形式はHTMLとさまざまなバイナリー画像形式でした。XMLは、もともとWeb上のSGMLとして開発され、その登場には、あらゆる種類の新しいXML形式が伴い、Webブラウザーはそれらを正しく解析して表示しなければなりませんでした。XML対応ブラウザーの最も基本的なタスクは、どの形式が最も重要か優先順位を付けられることであり、Firefox Deer Parkは、この点でなかなか巧みです。

XML

Mozilla(およびFirefox)は、長年、プレーンXML(名前空間を含む)を非検証モードで解析してきました。デフォルトでは、XMLを表示して、ユーザーに次のように知らせるだけです。

このXMLファイルには、どのようなスタイル情報も関連付けられていないようです。ドキュメント・ツリーを下記に示します。

移植可能なxml:stylesheet処理命令をXMLに埋め込んで、CSSスタイルシートまたはXSLT変換(後述)を読み込んで、その結果を元のXMLの代わりにユーザーに対して自動的に表示するようにFirefoxに命じることができます。この場合、ブラウザーのソース表示機能によって、元のXMLを表示することができます。Mozillaの欠点の1つは、大きなXMLドキュメントを完全に解析してからレンダリング・エンジンにデータを渡すことです。つまり、大きなドキュメントの読み込みに時間がかかります。Mozillaの開発者たちは、段階的なXMLローディング・サポートの追加について、数年間議論してきました。これがFirefox 1.5で実現すればすばらしいのですが、そのような兆しはありません。FirefoxはDTD検証や、W3C XML Schema(WXS)やRELAX NGなどのその他の検証技術をサポートしていません。XLink(シンプルなリンクのみ)のサポートは十分なので、HTMLでと同じような種類のリンクをXMLで表現することができます。また、FirefoxはXML Baseをサポートしています。これは、XLink内の相対URIを解決するためのベースURIを設定する仕様です。リンクから、W3C XPointerまたはより古いXPointer仕様のドラフトのサブセットに対するFIXPtr版を使用して、ドキュメントの断片に誘導することができます。

XHTML

Mozilla Firefox 1.0は、XHTML 1.0 Strict、Transitional、およびFramesetと、XHTML 1.0 Strictのモジュール化に基づくXHTML 1.1をサポートしています。XHTML 2.0は、まだワーキング・ドラフト段階であり、Firefox 1.5がリリースされる前に仕様が完成することはないでしょう。HTMLおよびXHTML 1.xからの変更が非常に大きいので、一部の開発者は、XHTML 2.0がどのように採用されるか疑問に思っています。FirefoxをターゲットにするWeb開発者(埋め込みアプリケーションなど)は、XHTML 1.1に準拠することをお勧めします。あいにく、一般のWebをターゲットとする開発者にとっては、これでも現実的ではないかもしれません。このシリーズでは、XHTMLについてこれ以上触れませんが、developerWorksサイトにはXHTML 1.1に関する詳細なチュートリアルがあります。(参考文献を参照してください。)

同僚のKurt Cagleも、XHTMLサポートについては私と同意見です。

GeckoでのXHTMLのレイアウト・モデルはHTMLと比べて微妙な違いがあり、たとえば、本文に適用されるCSSは、ドキュメントのマージン内の領域しかカバーしません。ページの背景全体に適用するには、CSSを<HTML>要素そのものに割り当てる必要があります。[また、]Firefox XHTMLは複合ドキュメントのサブパートをサポートしているので、たとえば、HTMLとSVGのコンテンツを統合するのに便利です。

CSS(カスケーディング・スタイルシート)

カスケーディング・スタイルシートは、WebブラウザーでXMLをレンダリングするための一般的な方法です。もちろん、HTMLスタイルにも広く使用されていて、ほとんどのブラウザーと同様、Firefoxでも常に強力に支持されてきました。CSS 2.0は完全なW3C勧告であり、Firefox 1.0はこの仕様の大部分をサポートしています。CSS 2.1のワーキング・ドラフトは、2.0の比較的小規模な改訂です。CSS 2.0と2.1は、集合的にCSS2と呼ばれています。Deer ParkはCSS2のサポートを強化して、CSS3のサポートも追加しています。CSS3は、現在、W3Cのワーキング・ドラフト段階です。CSS3が早期採用されているのは、XMLコンストラクトのサポート強化など、Web開発者の焦眉の急の多くを解決しているからです。このシリーズの後半でCSSについて述べますが、XMLでのCSSの使用(参考文献を参照)に関する私のチュートリアル・シリーズ(developerWorksで入手可能)もお勧めします。これらの参考文献には、FirefoxのCSS2サポートの制約に関する実用的なデモも含まれていますが、これらのほとんどはDeer Parkで修正されます。

SVG(Scalable Vector Graphics)

SVGは、XMLベースの画像形式を規定したW3C仕様です。SVG画像は、移植性が高く、解像度に依存せず、XMLで表現されているにもかかわらず、驚くほどコンパクトです(いくつかのXML設計を妥協した結果です)。機能セットには、ネストされた変換、クリッピング・パス、アルファ・マスク、ラスター・フィルター・エフェクト、テンプレート・オブジェクト、そして(もちろん)拡張が含まれます。SVGは、SMIL(Synchronized Multimedia Integration Language)のモジュールによってアニメーションをサポートし、ビューの拡大と縮小、多種多様なグラフィック・プリミティブ、グルーピング、スクリプティング、ハイパーリンク、構造化メタデータ、他のXMLドキュメントへの容易な埋め込みもサポートしています。SVGは、CSSやDOM(Document Object Model)など、他のXMLおよびWeb関連テクノロジーで動作します。Mozillaには、今まで長い間、オプションの簡単なSVGサポートしかありませんでしたが、誰もそれに磨きを掛けたり、デフォルトで組み込むようにしようとしませんでした。Firefox Deer Parkには初めからネイティブSVGサポートがあり、特に、SVG 1.1 Fullのサブセットをサポートしています。現在のDeer Parkのスナップショットに見当たらない機能、たとえば、宣言型SMILアニメーション、フィルター、テキスト・パス、マスク、パターン、SVG定義フォントなども、実際の1.5リリースでは姿を現すかもしれません。Deer Parkは、MIME型のimage/svg+xmlで与えられたリソースをSVGとして透過的に表示し、特別なプラグインを必要としません。これには、オブジェクト要素に埋め込まれたSVG画像も含まれます。

MathML

MathMLは、数学情報を表現するためのW3CのXMLボキャブラリーです。これにより、抽象的な数学上の意味を重視した規則(コンテンツ・マークアップ)によって、または表示を重視した規則(プレゼンテーション・マークアップ)によって数学を表現することができます。この仕様は、現在はバージョン2.0であり、FirefoxはこのバージョンをスタンドアロンとXHTML内の埋め込みの両方でサポートしています。MathMLドキュメントを表示するには、システムにフォントを追加しなければならない場合があることに注意してください。

canvas

canvasは、スクリプト可能なビットマップ描画サーフィスの役目を果たす要素です。用途は無限です。ゲーム、派手なビジネス・プレゼンテーションのグラフィックス、特殊なフォームのコントロール、シミュレーション、複雑なデータの視覚化。これらは一例に過ぎません。canvasの固定サイズを要素そのものの中で定義した後、一般に、canvas APIを使用するスクリプトから実際の描画を行って、canvasにビジュアル・オブジェクトを作成します。canvasは初め、Appleによって同社のSafariブラウザー向けに、SVGサポートなどの複雑なグラフィックス機能の基礎として開発されました。Mozillaがこのアイデアを思いつき、いまやcanvasはブラウザー・ベンダーのWhatWGコンソーシアムの規格となっています。Mozillaのcanvasは、現在は2Dグラフィックスしかサポートしていませんが、Mozillaプラットフォーム用のOpenGLファシリティーが使用可能になれば、3Dも夢ではないかもしれません。


ドキュメント・モデルの作業

Webブラウザーは長い間、シンプルで静的なページ以上のものを開発者が提供できるように、動的機能を提供してきました。複雑なWebアプリケーションへ向かうトレンドの中で、このような機能はますます複雑になり、その多くが何らかの方法でXMLに基づいています。JavaScript(またはその国際標準形態であるECMAScript)は、Webブラウザーのほとんどの動的機能の基礎を形成するパワフルで動的な言語です。

E4X(ECMAScript for XML)

E4Xはドラフト標準であり、ECMAScript言語にネイティブXMLデータ型を追加して、一般的なXML操作のための演算子を提供します。E4X規格のページを引用すると、

E4Xは、ECMAScript言語にネイティブXMLデータ型を追加して、XMLオブジェクトを操作するための親しみやすいECMAScript演算子の意味を拡張します。また、検索やフィルタリングなど、一般的なXML操作のための少数の新しい演算子のセットも追加します。また、XMLリテラル、名前空間、修飾名など、XMLの処理を容易にするメカニズムのサポートも追加します。

E4Xは、おそらく、XMLをECMAScriptオブジェクトに解析する手段として最も広く使用されていて、非常に簡単に操作できます。このことがいくつかの厄介な問題をもたらしています。なぜなら、XML構文を直接使用するので、他のタグ・ベースの形式に埋め込んだときに、いささかの混乱を生むからです。事実、Deer Parkの最新のアルファ・リリースでは、E4XはHTMLページではデフォルトでは無効になっています。互換性のないブラウザーからスクリプトを隠す従来の方法と干渉するからです。ただし、Webページの作成者はtype="text/javascript; e4x=1"という形式の属性を使用することによって、スクリプト要素内で有効にすることができます。

XSLT

Mozillaは約5年前からXSLTをサポートしてきましたが、最近は、サポートの信頼性が増し、ECMAScriptからXSLT変換を呼び出せるようにもなりました。Deer Parkには、MozillaでのXSLTの動作について、大きな変更は含まれていません。少なくとも、EXSLT拡張がサポートされるとよいのですが、これは予定にはありません。ただし、議論のテーマにはなっているので、将来の可能性はあります。

XForms

XFormsは、WebフォームのXMLデータ処理の規格であり、さまざまなメディアを通じて、さまざまなプラットフォームで使用することができます。XFormsは、フォームの目的をプレゼンテーションから切り離すことを目指しています。すなわち、フォームがすることを、フォームの見栄えから切り離します。XMLボキャブラリーを使用して、XMLコンテンツを操作するフォームUIを開発することができます。XFormsは、XHTML 2.0のフォーム・モジュールの役目を果たしますが、単独のW3C勧告です。おなじみのHTMLフォーム要素よりはるかに複雑ですが、より洗練された、移植可能なフォームを生成することができます。その複雑さから、MozillaでのXFormsサポートには若干の抵抗がありましたが、2004年8月、IBMとNovellがリソースを提供し、Mozilla FoundationがMozillaでXFormsを実装するプロジェクトを開始しました。この作業の成果が、Deer Parkにバンドルされた拡張として使用できます。XFormsに関連して、Deer ParkはXML Eventsのサポートも追加しています。これは、XMLオブジェクトの操作に関するイベントを監視して、それらのイベントを処理するためのW3C規格です。例として、XMLイベントは、ユーザーがXFormsベースのテキスト入力フィールドのテキストを変更したときにレイズされます。

XTF(eXtensible Tag Framework)

XTFはMozilla固有のテクノロジーであり、これにより拡張作成者はMozillaで新しいXML名前空間を作成することができます。その際には、ECMAScriptまたはC++で作成したコードを使用します(技術的には、Mozillaコンポーネント・システムXPCOMをサポートしている任意の言語で作成することができます)。事実、Mozilla XFormsプロジェクトがXForms名前空間での要素のサポートを追加するためにXTFを使用しています。XTFが、コアでのサポートを待たずに、あらゆる種類のXMLテクノロジーをMozillaに追加するためのパワフルな手段となることは確実です。

Webサービス

Mozillaでは、ECMAScriptからXML Webサービスにアクセスすることができます。SOAP 1.1、WSDL 1.1、およびXML-RPC用コンポーネントがあります。このように、リモートのサービス・プロバイダーからのメッセージを通じて使用可能な機能を組み込むことができます。


Firefox: 完璧なXMLベースのブラウザー・ワークベンチ

ある人々にとっては、MozillaのXML機能の中で最も魅力的なものは、XUL(XML User Interface Language)です。これは、クロス・プラットフォームなユーザー・インターフェースを記述するためのマークアップ言語です。XULは、Mozillaプラットフォーム向けに設計されましたが、より広い用途を目指しています。XULについて考えるときには、Webブラウザーに表示されるこまごまとしたもの、たとえば、メインのレンダリング領域、メニュー、アイコンとボタン、URLバー、タイトル・バー、ステータス・バー、サイドバー、ダイアログ・ボックスなどを想像するのが一番よいでしょう。XULを使用すると、これらすべてのコンポーネントを作成し、配置し、アクティブにすることができます。事実、完全なMozilla Webブラウザーは、XULアプリケーションとして作成されました。(ただし、Firefoxはそうではありません。)XULアプリケーションはXMLで指定され、そこで各コンポーネントが定義されます。Deer Parkは、動的オーバーレイや半透明の背景など、いくつかの重要な機能強化をXULにもたらし、XULコンポーネントの組み合わせと表現の柔軟性を高めます。XULは、もう1つのXMLベースの宣言型言語、XBL(Extensible Binding Language)と密接に連携するので、XULで表現されるコンポーネントの特殊な動作を指定することができます。Mozillaは、XULで使用される半構造化データを管理するために、RDF(Resource Description Framework)も使用します。RDFは、Web用のXML直列化を備えたメタデータ・システムであり、Webリソースに関する公式化された文の集合を記述するためのモデルです。


まとめ

FirefoxのXMLサポートがいかに広く深いものであるかがお分かりいただけたと思います。この記事では、これらの機能の俯瞰図を述べました。次回からの記事では、この分野についてさらに詳しく解説し、Firefox 1.0またはDeer Parkの実用的なコードの断片も示します。これはXML開発者にとっては特に楽しみなことです。XMLは次世代のWebテクノロジーを推進する原動力であり、Firefoxユーザーはこれらの発展を利用する用意ができているからです。


謝辞

この記事の執筆を助けてくれたKurt Cagleに感謝します。

参考文献

学ぶために

  • Firefox 1.5に至る道を注視したい人にとって最高の情報源は、Deer Park Release Tracking and Management Wikiです。Firefox roadmap pageの方がよく知られていますが、前者ほど頻繁に更新されていません。
  • この記事で触れたXML技術の多くは、Uche Ogbujiによる記事、「A survey of XML standards: Part 4」(developerWorks, 2004年3月)の中に網羅されています。この記事は、最も重要なXML標準に関して、詳細なクロスリファレンスを提供しています。
  • IBMによるFirefoxの採用について読んでください。また、Firefox採用を促進するための、より一般的な動きとして、Spread Firefoxを読んでください。
  • SVGに関して、Nicholas Chaseによるチュートリアル、「Introduction to Scalable Vector Graphics」(developerWorks, 2004年3月)で学んでください。ここには数多くの例が挙げられています。またMozilla(つまりFirefox)でのSVGに関しては、Mozilla SVG FAQを調べてください。詳細に関して真剣に知りたい人は、Mozilla SVG Status pageを調べてください。
  • MathMLについて、Robert MinerとJeff Schaefferによる「 A Gentle Introduction to MathML, 」で学んでください。もし興味があれば、非常に詳細に解説している、MathML: Presenting and Capturing Mathematics for the Web (PDF)」を読んでください。Mozillaでの実装に関しては、そのプロジェクト・ページで学んでください。ただし、このページは古くなっていることに注意してください。
  • Mozilla/XForms project発表資料を見てください。
  • XTF project pageを調べて、この新しい機能について学んでください。この機能を利用すると、どんなXMLでも扱えるエクステンションを作ることができます。
  • Mozillaの開発者センター、 Drawing Graphics with Canvasで、canvasについて学んでください。
  • XULXBLについて、そしてMozillaの中でRDFがどのように使われているかについて学んでください。
  • developerWorksのXMLゾーンには、XML関係の資料が他にも豊富に用意されています。よりWebに関係した技術であれば、Web developmentゾーンを調べてください。
  • XMLおよび関連技術においてIBM認証開発者になる方法については こちら を参照してください。
  • W3C HTML Home Pageには、すべてのバージョンのXHTMLについて情報が提供されています。また、Uche OgbujiによるdeveloperWorksのチュートリアル、「XHTML, step by step」(2005年9月)も、この技術を学ぶための一歩として適当です。
  • Uche Ogbujiによる3回シリーズのチュートリアル、「Use Cascading Stylesheets to display XML」で、Cascading Stylesheetsを詳しく学んでください。
    • 第1回(2004年11月)は、ブラウザーでXMLを表示するためのCSSの使い方を解説しています。
    • 第2回(2005年2月)は、第1回を基礎に、中級および上級の内容を網羅しています。
    • 第3回(2005年6月)は、XMLを処理するためにCSSと併せてXSLTを使う手法について解説しています。

製品や技術を入手するために

  • MozillaベースのWebブラウザー、Firefoxを入手してください。Firefoxは標準に準拠しており、高いパフォーマンスやセキュリティー、そして確実なXML機能を備えています。Deer Parkのサンプルに関しては、この記事の執筆時点では実稼働使用できる状態ではなかったことは重要ですので注意してください。ただしthe Deer Park project pageから入手することはできます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML, Web development
ArticleID=239852
ArticleTitle=Firefox 1.5でのXML、第1回:XML機能の概要
publish-date=09202005