カメレオン名前空間

カメレオン名前空間

[12] カメレオン・スキーマ (chameleon schema) は、 それを取り込む側から任意のXML名前空間を指定できるスキーマをいいます。 カメレオン・スキーマにおいて定義された要素などの語彙は、 任意の XML名前空間に所属できることになります。ひいては、スキーマ上の記述の如何に関わらず、 任意ないし多数のXML名前空間で用いることが想定された語彙を一般にカメレオン (chameleon) であるといいます。

[13] カメレオンなスキーマや語彙はマーク付け言語の設計の柔軟性と再利用可能性のために必要であるとする主張と、 実装可能性や実用上の相互運用性の低下をもたらすだけであって好ましくないとする主張があります。 様々な状況下で好きなマーク付け言語を設計できるようにするための部品、雛形を作るという立場なら、 たしかに固定のXML名前空間を与えるよりは、任意のXML名前空間に取り込めるスキーマを用意し、 それを好きなホスト言語に組み込んで使ってください、というのも一つの選択肢でしょう。 一方で、 Web などの開放的な環境にあって複数の実装、多数の著者が混在する環境下では、 同じはずの語彙が複数のXML名前空間で記述できるとすれば、それだけで既に相互運用性上のリスクであり、 また語彙の混在を考慮すると組み合わせによって実装は困難になるだけであり、 著者の理解可能性もまた低下します。

事例

[19] XHTML 2.0XFormsXML Eventsカメレオン名前空間として取り込んでいました。

[25] XFormsXML Schemaデータ型カメレオン名前空間として取り込んでいました。 >>24

[26] これって XHTML2 とか他の名前空間まで伝播するってことでしょうか??

カメレオン要素

[20] 実装上カメレオンスキーマを使っていないとしても、 同じ語彙が複数のXML名前空間で重複して定義されていることがあります。

[21] 例えば XHTML にも PLS にも meta 要素があったり、 XHTML にも SMIL にも head 要素があったりしますが、 要素単位で名前空間を変更しなければならない不便をきらってか、 似て非なるものとして定義されています。

[22] 理論上は同じ機能は1つあればXML名前空間の機能で混在させられ、 仕様書の開発も実装の開発も著者の理解も容易になるはずですが...

[23] HTML にも SVG にも a 要素script 要素があり、同じように使えると思いきや、細かい点が色々と違っていて、 仕様書の開発者も Webブラウザーの開発者も著者も混乱して困っています。 XML名前空間を使って単一の要素を混在させていればこんなことにはならなかったのにw

メモ

[1] Chameleon schemas considerd harmful (Elliotte Harold 著, 2007-01-02 23:13:28 +09:00 版) http://lists.w3.org/Archives/Public/www-forms-editor/2007Jan/0000.html (名無しさん)

[2] Re: Chameleon schema considered harmful (John Boyer 著, 2006-11-02 09:27:29 +09:00 版) http://lists.w3.org/Archives/Public/www-forms-editor/2006Nov/0000.html (名無しさん)

[3] Chameleon schema considered harmful (Elliotte Harold 著, 2006-10-26 05:19:39 +09:00 版) http://lists.w3.org/Archives/Public/www-forms-editor/2006Oct/0001.html (名無しさん)

[4] W3C XML Schema: やるべきこと、やってはいけないこと (2005-06-09 09:08:09 +09:00 版) http://www.horobi.com/xml/XMLSchemaDosAndDONTs.ja.html#avoid_chameleon (名無しさん)

[5] Re: Chameleon schemas considerd harmful (John Boyer 著, 版) http://lists.w3.org/Archives/Public/www-forms/2007Feb/0021.html

On behalf the XForms working group, I am writing to inform you that the group elected to remove the chameleon schema feature from the specification.

(名無しさん 2007-02-09 15:57:33 +00:00)

[7] XForms 1.1 の項も参照してください。

[6] もうあきらめたのかと思ったら、

XHTML 2.0 - XForms Module ( 版) http://www.w3.org/MarkUp/2009/ED-xhtml2-20090109/mod-xforms.html#s_xformsmodule

には

The XForms Module provides a rich collection of forms features within the XHTML namespace.

と書いてある。これって XHTML名前空間XForms要素属性を持ち込むという意味なのだろうか?

XHTML 2.0 - XML Events Module ( 版) http://www.w3.org/MarkUp/2009/ED-xhtml2-20090109/mod-xml-events.html

にはもっとはっきり

As permitted by XML Events 2, this element is incorporated into the XHTML namespace.

と書いてある。

でも

XHTML 2.0 - XML Handlers Module ( 版) http://www.w3.org/MarkUp/2009/ED-xhtml2-20090109/mod-handler.html

とか

XHTML 2.0 - XML Scripting Module ( 版) http://www.w3.org/MarkUp/2009/ED-xhtml2-20090109/mod-scripting.html

にはなぜか何も書いてないね。

[8] Compound Document by Inclusion (CDI) Framework ( 版) http://dev.w3.org/2006/cdf/cdi-framework/#importing

[9] 実際のところ Forms WG はカメレオンを未だに悪いとも思っていないようで、 XForms for HTML ( 版) http://www.w3.org/MarkUp/Forms/specs/XForms1.2/XFormsForHTML/index-all.html#intro-reading では、

The XForms for HTML attributes are offered to HTML and XHTML web pages as a set of local attributes. Other consuming host language markup languages may adopt these attributes as global attributes in the XForms namespace (http://www.w3.org/2002/xforms).

Host language processors should be, but are not required to be, namespace aware. For clarity, this specification describes integration with explicitly declared XForms elements by using the prefix xf to indicate the XForms namespace (http://www.w3.org/2002/xforms) being applied to those elements. A host language processor may adopt the XForms elements into its own namespace for ease of authoring.

(HTML に追加する属性は実は XForms 名前空間属性の特例だし、 ホスト言語の設計者次第で XForms要素を好きな名前空間に突っ込んでも構わない) なんてことが述べられています。

[10] XHTML Access Module ( 版) http://www.w3.org/TR/2010/NOTE-xhtml-access-20101216/#docconf

[11] >>10 には「このモジュール自身の名前空間に取り込まないなら」という適合性の規定があり、 acess 要素XHTML名前空間ではなく、 任意のホスト言語名前空間で用いることを認めているようです。

[15] XHTML Access Module ( 版) http://www.w3.org/TR/2010/NOTE-xhtml-access-20101216/#hostconf

[16] >>15ホスト言語XHTML のどちらの名前空間でもよいとされています。

[14] XForms Namespace News - Anne’s Weblog about Markup & Style http://annevankesteren.nl/2006/03/xforms (名無しさん 2006-03-19 00:54:05 +00:00)

[17] [Fwd: Why chameleon use of namespaces is bad [ACTION-439]] ( (L. David Baron 著, 版)) http://lists.w3.org/Archives/Public/www-archive/2009Feb/0065.html

[18] カメレオンスキーマによる名前空間のマージ(?)は、 XML名前空間の趣旨に真っ向から反していて、 それが必要になっているということ自体がXML名前空間の失敗を物語っています。

[27] >>18 ところがそれ、「XML名前空間の趣旨」に反しているとも断言できないんですよね、 よく調べていくと。どうもXML名前空間の開発とその周辺の利用事例を見ていくと、 各プレイヤーそれぞれ「XML名前空間の趣旨」を好き勝手に解釈しているようで、 何が正しい「XML名前空間の趣旨」なのか、調べれば調べるほどわからなくなります。

[28] たぶん同床異夢の各プレイヤーが自分達の思い描く理想像を勝手に詰め込んだ結果があの曖昧な XML名前空間 だったのでしょうね。

[29] カメレオンスキーマもその数多あった「理想像」の1つではあったのでしょう。 XML Schema というスキーマ言語もそのような使い方を1つの正当なあり方として設計されているようですし。

[30] まあだからといってカメレオンスキーマを大暴走させて HTML をぶっ壊そうとした XHTML2 WG が免責される理由にはならないですけどね。