レベル: 初級 Uche Ogbuji (uche@ogbuji.net), Partner, Zepheira, LLC
2007年 10月 02日 Firefox 2.0 は XML サポートに関して、いくつか重要な変更を行っています。Firefox 2.0 は現在、これまでの Firefox のなかで最も多くのユーザーに使われています。Firefox 2.0 で更新された XML 機能について学びましょう。更新された機能の中には、議論の多い、RSS Web フィードの処理方法の変更も含まれています。
Web ブラウザーは、新しいアプリケーション・プラットフォームとしての新たな役割を考えると、おそらく現在最もホットなソフトウェアと言えるでしょう。最近は、Ajax (Asynchronous JavaScript + XML) などの動的 HTML 技術が再び登場したことや Microsoft® Internet Explorer® の開発の復活などによって、ソフトウェア開発にとって特に興奮に満ちた時期となっています。過去 2、3 年の間に developerWorks で公開された Firefox での XML に関するシリーズ (「参考文献」を参照) では、バージョン 1.5 を取り上げました。バージョン 1.5 は、コアとなる Mozilla Gecko ブラウザー・エンジンのバージョン 1.8 をベースに構築されています。その後、Mozilla プロジェクトでの絶え間ない開発によって、Gecko 1.8.1 Web 描画エンジンをベースに構築された Firefox 2.0 がリリースされました。Firefox 2.0 で行われた開発のいくつかは、XML の処理に関係しています。この記事では、Firefox での XML 処理で何が新しくなったのか、そして開発者が念頭に置く必要のある、問題となりうる重要な点についても説明します。
Web フィードに対するコントロールの緩和
Firefox 2.0 での 1 つの変更が、ユーザー・コミュニティーを少し驚かせています。RSS または Atom などの Web フィードをホストする場合、XSLT を含めることがあります (このスタイルシートを、ユーザー用に別の表示に変更するのです)。リスト 1 は、そうした変換を参照する Atom フィードの例です。
リスト 1. スタイルシートの参照を持つ Atom フィード
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xml" href="atom2html.xslt"?>
<feed xmlns="http://www.w3.org/2005/Atom"
xml:lang="en"
xml:base="http://www.example.org">
<id>http://www.example.org/myfeed</id>
<title>My Simple Feed</title>
<updated>2005-07-15T12:00:00Z</updated>
<link href="/blog" />
<link rel="self" href="/myfeed" />
<author><name>Uche Ogbuji</name></author>
<entry>
<id>http://www.example.org/entries/1</id>
<title>A simple blog entry</title>
<link href="/blog/2005/07/1" />
<updated>2005-07-14T12:00:00Z</updated>
<summary>This is a simple blog entry</summary>
</entry>
<entry>
<id>http://www.example.org/entries/2</id>
<title />
<link href="/blog/2005/07/2" />
<updated>2005-07-15T12:00:00Z</updated>
<summary>This is simple blog entry without a title</summary>
</entry>
</feed>
|
2 行目のスタイルシート処理命令 (PI: processing instruction) が重要です。これを Firefox 1.5 で表示すると、ブラウザーは忠実に atom2html.xslt をロードし、そしてその結果を表示します。実際の XML を表示するためには、この記事のシリーズの第 2 回 (「参考文献」を参照) で説明したように、ソースを表示する必要があります。Firefox 2.0 では、ブラウザーはスタイルシートの処理命令を無視し、カスタムの Firefox ビューを使います (図 1: Mac OS X での Firefox 2.0.0.6 のスクリーン・ショット)。
図 1. Firefox 2.0 に組み込みの Web フィード・ビュー
これを回避するための、また指定したスタイルシートを強制的に使用させるための唯一の方法は、Firefox が Web フィードをチェックするために使用する単純なヒューリスティックを「だます」ことですが、そのためには、ファイルの最初の 512 バイトをスニッフィングして「rss」または「feed」という単語を探す必要があります。リスト 2 は、この 512 バイトに埋め込むために作られたコメントを挿入する、よく知られた回避策を示しています。
リスト 2. Firefox 2.0 と Internet Explorer 7 でのスタイルシートのデフォルト処理を回避する Atom フィード
<?xml version="1.0" encoding="utf-8"?>
<!-- Firefox 2.0 and Internet Explorer 7 use simplistic feed sniffing to override desired
presentation behavior for this feed, and thus we are obliged to insert this comment, a
bit of a waste of bandwidth, unfortunately. This should ensure that the following
stylesheet processing instruction is honored by these new browser versions. For some more
background you might want to visit the following bug report:
https://bugzilla.mozilla.org/show_bug.cgi?id=338621
-->
<?xml-stylesheet type="text/xml" href="atom2html.xslt"?>
<feed xmlns="http://www.w3.org/2005/Atom"
xml:lang="en"
xml:base="http://www.example.org">
<!-- content of the feed identical to listing 1, so trimmed -->
</feed>
|
ユーザー・コミュニティーで盛んに議論が行われた後、Firefox の開発者達は彼らの立場を堅持することを決定しました。そのため今の様子では、この動作は Firefox の将来のバージョンでも同じはずです。私は、個人的にはこの動作を好みません。皆さんはこの議論を読み返し、これが適切かどうかを自分自身で判断してください。1 つ重要な点として、この新しい動作が Internet Explorer と Apple Safari の動作と似ていることに注意してください。
microsummary
microsummary は Live Title とも呼ばれ、Firefox 2.0 の新しい便利な機能です。この機能を利用すると、(特にブックマークで) ある Web サイトのタイトルを、そのサイトの有用なコンテンツで置き換えるようにブラウザーに指示することができます。例えば、IBM developerWorks の microsummary は、静的なテキストの「developerWorks : IBM's resource for developers」ではなく、このサイトの最新記事のタイトルかもしれません。microsummary は、Web サイトが提供することもでき、またはユーザーが作成することもできます。後者のケースは「microsummary generator」として知られており、ユーザー側で XML と XSLT の処理が必要なため、この記事にとってはさらに興味深いものです (XML に堪能でない人は、他の人が作成したジェネレーターを再利用することもできます)。リスト 3 は developerWorks の主要記事のタイトルを抽出する microsummary generator です。
リスト 3. developerWorks の主要記事のタイトルを使う microsummary generator
<?xml version="1.0" encoding="UTF-8"?>
<generator xmlns="http://www.mozilla.org/microsummaries/0.1"
name="IBM developerWorks featured article">
<template>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:html="http://www.w3.org/1999/xhtml">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:text>Featured article:</xsl:text>
<!-- On sites that make wider use of element IDs
you can use more direct and efficient XPaths -->
<xsl:value-of select="//html:a[@class='feature'][1]"/>
</xsl:template>
</xsl:transform>
</template>
<pages>
<include>http://www.ibm.com/developerworks/[a-zA-Z0-9]*/?</include>
</pages>
</generator>
|
このジェネレーターには、テンプレート (template) とページ情報 (pages) という 2 つのセクションがあります。前者は microsummary のテキスト抽出の対象となる Web ページに適用される XSLT を含んでいます。後者は、どのページに対してブラウザーが microsummary を使うかを指定します。microsummary は単純テキストなので、出力命令もそのように指定します。microsummary の最も重要なポイントは、XPath //html:a[@class='feature'][1] です。これは主要記事のタイトルを含む要素を探します。pages セクションには、メイン・サイトのページと developerWorks の各ゾーンのページに microsummary を適用させるための正規表現が提供されています。
「参考文献」には、リスト 3 のような microsummary generator をインストールするための手順を含んだチュートリアルを挙げてあります。現状では、microsummary は Mozilla のみが持つ機能です。
SAX その他
Mozilla の拡張機能を開発する人達にとって主に関心のある開発の中に、Mozilla の XPCOM コンポーネント・システムのための SAX パーサー・フレームワークがあります。他の上位レベルの処理技術がどれも適切でない場合には、このフレームワークを利用することで XML を効率的に処理する拡張機能を開発できるはずです。XPCOM が統合されているということは、XPCOM バインディングを使って C++ コードまたは JavaScript コードで、あるいは他の任意の言語で SAX イベントを処理できるということです。
OpenSearch
OpenSearch は Amazon A9 のインキュベーターで開発された XML 標準です。OpenSearch は、検索エンジンを記述し、使用するための、いくつかの XML フォーマットと他の規則を提供しています。Firefox は、これまでも常に検索エンジン用の拡張可能プラグインを強力にサポートしてきましたが、バージョン 2.0 では OpenSearch をサポートするようになりました。そのため、Internet Explorer や他のブラウザーとも互換性のある機能を使って検索機能を拡張することができます。
Firefox は OpenSearch 1.1 をサポートしていますが、これは現状ではベータ版です。そのため、Firefox と OpenSearch の互換性を保つためには更新が必要になるかもしれません。リスト 4 は IBM developerWorks に対する OpenSearch 記述文書の例です。
Lリスト 4. IBM developerWorks に対する OpenSearch 記述文書
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>IBM developerWorks search</ShortName>
<Description>Search IBM developerWorks zones</Description>
<Tags>xml java architecture</Tags>
<InputEncoding>utf-8</InputEncoding>
<Contact>https://www.ibm.com/developerworks/secure/feedback.jsp</Contact>
<!-- The template attribute is split at the "?" for formatting purposes -->
<Url type="text/html"
template="http://www.ibm.com/developerworks/views/xml/libraryview.jsp?
search_by={searchTerms}"/>
<Attribution>All content Copyright 2007, IBM developerWorks</Attribution>
</OpenSearchDescription>
|
この文書は単純に、IBM developerWorks のサイトが下記の検索 URL を提供していると言っています。
http://www.ibm.com/developerworks/views/xml/libraryview.jsp?search_by={searchTerms} |
ここで {searchTerms} はテンプレート・パラメーターであり、検索ツールがこれを検索語で置き換えます。そのため、例えば「Firefox XML」を検索する場合には、URL は次のようになります。
http://www.ibm.com/developerworks/views/xml/libraryview.jsp?search_by=Firefox+XML |
OpenSearch 仕様は、この URL テンプレート・システムを定義しています。また OpenSearch は、いくつかの特別な拡張子を付けた検索結果を RSS 2.0 または Atom 1.0 のフィードとして返すための規則も定義しています。Firefox は、まだそうした Web フィードの検索結果をサポートしておらず、type="text/html" (URL から返されるコンテンツ・タイプを表します) を持った Url 要素がない記述は、すべてエラーになります。この制約は残念ですが、大部分の人は古典的な HTML フォームと結果ページを使って検索を行い、Web 2.0 の機構は使わないという事実を考えると、現実的な結果かもしれません。
Firefox 2.0 では、リスト 4 のような OpenSearch の記述は、検索エンジンのための完全なプラグインとして機能します。Web サイトがこの記述を指定するためには、次のようにページ・ヘッダーのリンクを使います。
<link rel="search" type="application/opensearchdescription+xml"
title="IBM developerWorks"
href="/path/to/opensearch/description/document.xml"/> |
注意: ここまでに示した 3 つの短いコード例は、通常は 1 行に表示されます。ここでは表示と印刷の便宜を考えて複数の行に分割してあります。
まとめ
現在アルファ版のテスト中の Firefox 3.0 では、さらに重要な XML 機能が登場します。完全なリリースは 2008年の前半になるでしょう。XML 処理のための非常に重要ないくつかのバグ修正と、新機能が含まれています。このバージョン 3.0 が Firefox の中心バージョンとして一般的に使用できるようになれば、そこで行われた修正や新機能について解説していく予定です。Mozilla の XML 用のコア・ツールキットは改善が続けられています。これは XML 技術を扱う開発者やユーザーにとって明らかなメリットです。大部分のユーザーや開発者にとって、Web ブラウザーは XML 処理の顔です。そのためこのシリーズでは、Firefox の最新バージョンの中にある機能の追跡と詳細な解説を続けていきます。
参考文献 学ぶために
製品や技術を入手するために
- Mozilla ベースの Web ブラウザー、Firefox を入手してください。Firefox は標準に準拠し、パフォーマンスとセキュリティー、そして確固とした XML 機能を提供しています。現在のバージョンは 2.0.0.6 です。
- 皆さんの次期開発プロジェクトを IBM trial software を使って構築してください。developerWorks から直接ダウンロードすることができます。
議論するために
著者について  | 
|  | Uche Ogbujiは、Fourthought Inc. のコンサルタント兼共同設立者です。Fourthought社は、エンタープライズ・ナレッジ管理のXMLソリューションを専門とするソフトウェア・ベンダー兼コンサルタント会社であり、XML、RDF、およびナレッジ管理アプリケーション用のオープン・ソース・プラットフォームである 4Suite の開発も行っています。Ogbuji氏は Versa RDFクエリ言語の中心的な開発者でもあります。ナイジェリア出身のコンピュータ・エンジニア兼ライターで、米国コロラド州ボールダー在住です。Ogbuji氏に関してさらに詳しくは、彼のブログであるCopiaを見るか、あるいはuche.ogbuji@fourthought.comに連絡してください。 |
記事の評価
|