2005年05月23日
川俣晶の縁側ソフトウェア技術雑記total 5166 count

大ざっぱで当てにならないW3C XML Schema問題の要約

Written By: 川俣 晶連絡先

 この状況を把握した上で信じているのか? XML SchemaやWebサービスが当たり前だと思っている人達へ!!という過剰に扇情的な見出しのコンテンツを書き、意外にも比較的多く読まれています。

 え? なぜ「過剰に扇情的」なのかって? そりゃもう、見出しで食いつかせなければ、永遠に読者が読まないからです。品があって誠実な見出しを付けることは、実は著者への裏切りです。この場合、著者=見出しを付けた人ですけど (笑。

 さて、このコンテンツには実は異なる2つの趣旨が織り込まれています。

 つまり、XML SchemaとWebサービスです。

 それは、以下のように実に分かりにくく表現されています。

XML Schemaには問題が多くあり、いわゆるWebサービスにはそれとは別の意味で(あるいは同根の類似の要因による)問題が多くあると言うことです。

 つまり、この文章は別の問題だよ、と言っているにも関わらず、「同根の類似の要因による」などという余計な言葉を添えたことで、同じ問題であるかのような印象を与える悪文になっています。

 そのために誤解された方もいるようです。

 菊池 Blogのやっぱり WS-* はアホなんやなでは、以下のように書かれてしまいました。

XML Schemaは厳密にお互いにスキーマ合意して「密結合」だと認識して使うには良いんとちゃうかな。

 菊池さん分かりにくくてごめんなさい。

 W3C XML Schemaの問題とは、XMLのスキーマ言語として問題があるという話であり、「厳密にお互いにスキーマ合意して「密結合」だと認識して使う」場合であっても、問題が生じうるものです。

 あまりに古い話題なので、今更それについて書く必要があると思い至らなかったのも敗因ではありますが、以下に簡単にまとめておきます。

問題の要点その1 過剰な複雑さと基本構造のいびつさ §

 あらためて、最初に紹介した村田さんの私よりW3C XML Schemaが嫌いな人たちより引用します。

 何が問題であるかは以下に述べられています。

彼(女)等が自分で書いている仕様(XQueryやXForms)が、 W3C XML Schemaのせいで圧倒的に複雑になり、普及が危ぶまれる状況では、 W3C XML Schemaを嫌悪するのも無理はないだろう。

 W3Cという組織は、自らがXML Schemaを勧告している関係上、建前としてスキーマをXML Schemaで書かねばなりません。その結果、W3Cで行われている多くの言語作成活動においてXML Schemaによるスキーマ作成が行われ、その結果として上手く書けない事例がいくつも発生しているとされています。

 このような問題は、実はXML Schemaが勧告される前から分かっていたことで、W3Cの大物であるJames Clarkや、日本のXML界の第1人者(XML 1.0勧告の作成に関わった唯一の日本人)は、早々に離反して別のスキーマ言語を作成しています。そして、RELAX, TREXを経て出来上がったものがRELAX NGです。

 そして、多くの場合、XML Schemaで上手く書けないスキーマを、RELAX NGではスマートに書けると言われています。W3C内部ですら、RELAX NGを使う動きはよく見かけるものになっています。

 そのことは、以下の文章から読み取れるでしょう。

W3CのいくつものWG(SVGなど)がRELAX NGを使ってスキーマを作っており、 W3C XML Schemaを使うのを止めている。この事実がもっと広く知られるように なれば、W3C XML Schemaに悩まされる人も減っていいのだが。

 これらのことは、好き嫌いやポリシーの問題では無いことを示しています。「僕たちXML Schemaよりももっと凄いRELAX NGを作ったから使ってよ」という子供っぽい競争でもありません。純粋に技術的な観点で、XML Schemaを使う現場では問題が発生しており、それを解消する手段としてRELAX NGが注目されていると言うことです。

問題の要点その2 PSVI問題 §

 XML 1.0は、もともと、DTDを処理した場合と処理しない場合で、処理結果が同じにならないという問題があります。たとえば、属性のデフォルト値がDTDに記述されている状況で、DTDを処理した場合には記述されていない属性値を要求するとデフォルト値が返ります。しかし、DTDを処理しない場合、何も返りません。

 XML Schemaはこの問題を丸ごと継承し、更に相違を拡大していきます。このような方向性は、常にスキーマによる検証を行うという前提があると言われます。

 RELAX NGはスキーマは検証にだけ使うものと規定して、処理結果の相違につながる機能を除去しています。

問題の要点その3 特定される単一のスキーマ §

 XML Schemaは、1つの名前空間に対応するスキーマが1つ存在するという前提を取るアーキテクチャであると言われています。

 しかし、ある名前空間に対応するスキーマは1つに限定されないこと。また、用途によっては、1つのXML文書の適用されるスキーマが複数存在する場合もあるため、このアーキテクチャは問題を引き起こすと言われています。

 RELAX NGでは、このような強い対応関係は強制せされません。たとえば、あるXML文書を送信する際に、送信者が使ったスキーマと、受信者が使ったスキーマが異なっても良いということです。

問題の要点その4 貴族とボヘミアンの対立問題 §

 XMLにはDTDにより検証される「妥当なXML文書」と、検証されない「整形式のXML文書」の2種類の文書があります。(厳密には、「妥当なXML文書」も「整形式のXML文書」の一種ではありますが)

 XML Schemaは、全てのXML文書に対応するスキーマが存在し、読み込む際には必ず検証を行うアーキテクチャを前提としていると言われます。つまり、検証しない使用法を全て認めないことを理想としていると考えられます。

 このような態度を取る者達を「貴族」、検証しない使い方を守ろうとする者を「ボヘミアン」と呼ぶ、「貴族とボヘミアンの対立問題」と呼ばれるものがあります。

 通常、貴族が支持するスキーマ言語はXML Schemaであり、ボヘミアンが支持するスキーマ言語はRELAX NGとなります。

 ここで注意すべき点は、ボヘミアンの立場がスキーマ不要論ではないことです。スキーマには、使うべき時と、使わない方が良い時がある、という立場です。

全く保証のない補足説明をすれば、XMLの祖先に当たるSGMLは常に検証を要求する言語でしたが、上手く普及しませんでした。しかし、検証しない使い方を導入したXMLは、SGMLとは比較にならないほど爆発的に普及しています。検証を必須としないことは、実用上必要とされる要件であり、それは現場レベルで既に実証済みと言えます。そのような状況の上で、既に失敗したやり方に回帰しようとしたXML Schemaに実用上の問題が発生するのは言わば当然といえます。そして、RELAX NGはそれを見越した安全ネットとして用意されたスキーマ言語であると言えます。

参考:

XMLにおける「ボヘミアンと貴族の階級闘争」を読み解く

問題の要点その5 W3Cの権威 §

 W3Cが勧告したのだから使うのが当然、という意見はW3Cに権威があるという前提で発せられるものです。

 しかし、実際にはW3Cが持つ権威はさほど高いものではありません。

 W3Cと同程度の格があると見なされるOASISで、XML SchemaのライバルとなるRELAX NGの制定活動が行われたことから、それは明らかです。

 ちなみに、RELAX NGはOASISを出発点として、ISO/IEC 19757-2:2003 Information technology -- Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NGとしてISO/IECの標準となっています。ISOとは国際標準を定める公的な組織であり、当然私企業や大学の集まりに過ぎないW3Cよりも、遥かに権威ある(つまり、社会に強い影響力を持つ)存在です。

 また、ISO/IEC規格の国内版として、JIS規格を「JIS X 4177-2 文書スキーマ定義言語(DSDL)第2部:正規文法に基づく妥当性検証RELAX NG」として審議する過程にあます。

 世界におけるISOにせよ、日本国内におけるJISにせよ、その権威は本来W3Cより高いものであるにも関わらず、WWWの世界ではW3Cが最も権威を持つかのような錯覚が一部にあって、それが盲目的なXML Schema支持につながっている面があります。

オマケのリンク集 §

 これを読んでいる想定読者はXML Schemaについての情報は既に十分に持っていると考えられますので、RELAX NG関係の目に付いたリンクを並べてみました。

 以下はほんの参考までに。

書いた人の立場 §

 RELAX NG 1.0の日本語訳の文章の一部を訳しました。おそらくJIS規格の本文の一部になっていると思います。

Facebook

このサイト内の関連コンテンツ リスト

2005年
05月
16日
この状況を把握した上で信じているのか? XML SchemaやWebサービスが当たり前だと思っている人達へ!!
3days 0 count
total 4627 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20050523120714
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.