村田真のXMLブログ
日本人で唯一W3CのXMLワーキンググループに参加しXMLの標準化プロセスに携わったXMLの生みの親、村田真さんのブログです。
XML アーカイブ
EcmaのMarkup Compatibilityについて
Open Document FormatとOffice Open XMLの角逐が話題になって久しい。ここに来て、Office Open XMLの新パートとして、Markup Compatibility という仕様をEcmaは発表した。私にとって、この仕様はここ数年でもっとも興味深いものである。
Markup Compatibilityは何のための仕様だろうか。仕様書には、次のように書かれている。
This Part describes a set of conventions that facilitate future enhancement and extension of XML markup.
このパートは、XMLマークアップを将来に増強・拡張するためのコンベンションを示す。
正直、これだけでは増強・拡張が何なのか分からない。具体的に考えられるのは、いくつかある。
1) Microsoft Office製品を利用するユーザ企業が、自らの業務を円滑に進めるため、文書に独自拡張を導入する。
2) Microsoftが、Office製品の機能であって、Ecma Office Open XMLに入っていない部分を導入する。
3) Ecma TC 45が、将来のOffice Open XMLを制定するとき、新機能を導入する。
どれが主な目的なのかは、私にはよく分からない。個人的にもっとも興味深いのは、1である。
Office Open XMLを制定しているEcma Tc 45の議長であるJean Paoliとは、名前空間を用いたユーザ拡張について、1999年ごろに寿司屋で長々と話したことがある。名前空間になにを期待するかは、XMLエキスパートごとに大きく異なるのだが、彼と私の意見はきわめて近い。それは、名前空間は一枚岩ではないXML文書を可能にするという考え方である。一つの文書中の名前空間を全部分かる人・プログラムは誰もいないかも知れない。一部しか分からないプログラムであっても、インターネット上で、互いに協調動作することができる。たとえば、1のシナリオにおいて、Microsoft 製品はユーザの独自拡張を理解しないが、独自拡張部分を扱うソフトウェアと協調して動作するものと期待される。
名前空間についてほとんど同じ意見をもつJeanと私だが、その意見に基づいて具体的にやってきたことは大きく異なる。私が取り組んできたのはNamespace-based Validation Dispatching Language である。これはJames Clarkの絶大な貢献を受けて、ISO/IEC規格として今年承認された。Jean Paoliが取りくんできたのが、このMarkup Compatibilityである。
Markup Compatibilityの提供する機能を簡単に要約する。Ignorable属性は、無視してよい名前空間を指定する。PreserveElementsとPreserveAttributes属性は、分からなくても保存しなければならない(消してはいけない)ものの名前空間を指定する。AlternateContent, Choice, Fallback要素は、独自拡張名
前空間を扱えないプログラムが代替として用いるものを指定する。
Markup Compatibilityはインスタンスベースの技術であり、NVDLはスキーマベースの技術であるという点は大きく異なる。しかし、基本となる思想が同じなので、両者は共存し、互いの弱点を補うのではないかと期待している。実際、Markup Compatibilityは、拡張を含んだ文書をどう検証するかについては、(拡張部分を無視して検証するという案を除き)なにも提供していない。これは、NVDL の得意領域である。一方、NVDLは、自分の知らない拡張部分を含んだ文書を、どう扱うかのガイドラインは示していない。Markup Compatibilityは、このガイドラインに他ならない。
資料
[1] Ecma TC 45,
Document Interchange Specification, Working Draft 1.4, Part 5: Markup
Compatibility.
http://www.ecma-international.org/news/TC45_current_work/tc45-2006-332.pdf
[2] 村田、NVDLの規格化が終了、
http://ch.kitaguni.tv/u/5250/XML/0000351032.html
[3] FDIS 19757-4 - Document Schema Definition Languages (DSDL) Part 4 -
Namespace-based Validation Dispatching Language,
http://www.jtc1sc34.org/repository/0694c.htm
投稿者: 村田 真 日時: 2006.11.24 | パーマリンク | コメント (0) | トラックバック (0)
XMLとJSON
最近は、XMLに対抗する技術としてJSONを聞くことが増えている。
私は、JSONにまったく反対しない。JSONは、プログラム内で用いられるデータのわかりやすいテキスト表現であることに徹している。XMLのほうがより汎用的(とくに文書用)で拡張性があるが、JSONのほうがより効率的な場合があることは疑いない。正直言うと、JSONがXMLの荷を肩代わりしてくれるほうが、私には有難いぐらいである(W3C XML Schemaで扱える範囲のXMLは、相当JSONに侵食されるだろう。)。
なお、このエントリは、Tim Brayの記事をきっかけとして書いた。XML陣営でJSONを否定する人は誰もいないとTim Brayは言う。そんなものだろうと私も思う。
追記: Should You Choose RELAX or JSON Now?という記事を偶然見つけた。
投稿者: 村田 真 日時: 2006.12.26 | パーマリンク | コメント (1) | トラックバック (0)
SOAPの単純さ?
SOAPの歴史についての素晴らしい読み物がある。Peter Laceyの“The S Stands for Simple”である。山本さんによる素晴らしい翻訳「S はシンプルの S」で、私はこれを知った。広い範囲の人にぜひ読んでほしい。
しかし、“The S Stands for Simple”を「S はシンプルの S」と訳すところを見ると、山本さんはSF好きなのかな?
投稿者: 村田 真 日時: 2007.01.27 | パーマリンク | コメント (3) | トラックバック (1)
解説論文賞を日本ソフトウェア科学会から頂いた
XMLとスキーマ言語に関する解説を、日本ソフトウェア科学会の「コンビュータソフトウェア」に出版してから三年近く経った。この解説が、本ソフトウェア科学会解説論文賞を受賞し、きのうの総会で表彰を受けた。表彰状を渡してくれた理事長は、大学の四回生だったときに博士課程の学生だった湯浅教授である。
投稿者: 村田 真 日時: 2007.06.14 | パーマリンク | コメント (0) | トラックバック (0)
atomの拡張についてのRELAX NGによる検証
Atom(RFC 4287)のスキーマは、スキーマ言語RELAX NGで書かれている。このスキーマは外部名前空間の要素・属性を許すように書かれている。
Atomにはさまざまの拡張がある。たとえば、Atom Threading Extensions(RFC 4685)は、スレッドを表現するために、外部名前空間の要素・属性を追加している。また、この拡張のためのスキーマも定義されている。
ここで問題なのは、RFC 4685のスキーマはAtomフィード全体を検証するのではなく、拡張要素・属性だけしか扱っていないことである。したがって、RFC 4685のスキーマを用いてAtomフィード全体を検証することはできない。いっぽう、RFC 4287のスキーマを使って検証すると、外部名前空間の要素・属性を検査せずに許してしまい、RFC 4685で決めた構文はまったくチェックされない。
先週、筑波大学で行なった集中講義で、Atomのスキーマを書き直し、Atom Threading Extensionについてもチェックするという演習をした。また、Open Searchについても、チェックするようにした。既存のスキーマをそのまま変更するのではなく、カスタマイズ部分は外に切り出している。
そのうち、ちゃんと整理してAtom WGに提出しようと思う。
追記: IETF Atom WGにスキーマを提出した。Atom, thread, history, open search
の四つを扱っている。また、他の拡張を追加することも容易である。
投稿者: 村田 真 日時: 2007.09.02 | パーマリンク | コメント (0) | トラックバック (0)
atomの拡張についてのNVDLによる検証
前回の記事で、Atom及びその拡張のRELAX NGによる検証について論じた。今度は、ほぼ同等のスキーマをNVDLとRELAX NGの組み合わせによって作成した。簡単に言うと、NVDLでAtomフィードを名前空間ごとに分割し、その結果をRELAX NGで検証している。
NVDL + RELAX NGで書いたほうが可読性・拡張性とも優れていると思うが、読者の意見はどうだろう。
投稿者: 村田 真 日時: 2007.09.12 | パーマリンク | コメント (1) | トラックバック (0)
Atomのさまざまの拡張と検証
以前の記事でAtomとその拡張をまとめて検証するためのスキーマを示した。
ほかにどんな拡張があるかとAtom Syntaxメーリングリストで聞いてみたところ、
他にも以下の拡張がよく使われているとJames Snellから返答があった。
- RFC 4946 Atom License Extension。スキーマはRELAX NG
- Atom Bidi Extension。スキーマはRELAX NG
- MicrosoftのSimple Sharing Extensions。スキーマはなく英文のみ
- GData。スキーマはなく英文のみ
- GeoRSS。スキーマはW3C XML Schema
- Dublin Core。スキーマはDTD
- Yahoo Media。スキーマはなく英文のみ
スキーマ言語は入り乱れているし、自然言語による説明しかないものもある。
みんなこれで本当に困らないの? Atomをやっている人は教えて。
Simple Sharing Extensionsにはスキーマを書いてみた。ほか全部書くのは
ちょっと辛い。XML開発者の日で、協力を呼びかけようかしら。
投稿者: 村田 真 日時: 2007.10.17 | パーマリンク | コメント (4) | トラックバック (0)
筑波での授業
Atomの拡張のためのスキーマをRELAX NGで書くことについて、以前の記事で書いた。
この内容は、筑波大学で行なった集中講義で取り上げたものである。そのときのパワーポイントを公開する。
投稿者: 村田 真 日時: 2007.10.23 | パーマリンク | コメント (0) | トラックバック (0)
第十回XML開発者の日
第十回XML開発者の日を画像電子学会VMA研究会の主催で、 2007年12月21日(金)
に開催します。OOXMLの投票結果とballot resolution meetingの予測について
私が発表します。参加申し込みをお待ちしています。
投稿者: 村田 真 日時: 2007.11.15 | パーマリンク | コメント (0) | トラックバック (0)
拡張を含むAtomフィードの完全な検証
OpenSearch, Google Calendar, threading, historyなどの拡張をAtomフィードに
含めた場合の完全な検証についての記事を公開した。
これは、以前のいくつかの記事(1, 2, 3)の続きになっている。実用的な検証
であって、NVDLでないと不可能な実例をあげたものである。
なお、NVDLのチュートリアルとして、Dave Pawsonによるもの、Petr NálevkaとJirka Kosek
によるものがある。
NVDLの実装は、Eclipseにも含まれている。Eclipseから切り出した検証器も
入手可能である。
投稿者: 村田 真 日時: 2008.05.10 | パーマリンク | コメント (1) | トラックバック (0)
筑波大学でのスキーマの授業
今年で三年目になり、これで一区切りである。
去年は、RELAX NGだけを用いて、atomスキーマをカスタマイズした。今年は、RELAX NGだけで行うカスタマイズのほかに、NVDLを用いて行うカスタマイズを説明した。具体的には、atom triplesを使えるようにカスタマイズした。なお、atomの拡張一般をNVDLで検証するとどうなるかは、以前に資料を公開している。NVDLはまだマニアックな話題だが、最近はODFやOOXMLでもNVDLを使っているし、特別講義だからまあいいだろう。
学生は、NVDLを用いたカスタマイズのほうが気にいったようだ。その気持ちはよく分かる。出来ないことも多いけど、個別のスキーマの中身をぜんぜ見なくてもよいのは分かりやすい。ただし、出来上がったNVDLスクリプト及びRELAX NGスキーマで満点をやれるものはなかった。いずれ、模範解答を掲載しよう。
投稿者: 村田 真 日時: 2008.11.23 | パーマリンク | コメント (0) | トラックバック (0)
RELAX NGの普及状況
RELAX NGの普及は少しずつだが確実に進んでいる。
AdobeのIDML(InDesign Markup Language)は、RELAX NGだけを利用している。他のスキーマ
言語は利用していない。
GoogleのCalendar APIなどは、きちんとしたRELAX NGスキーマを備えている。他のスキーマ
言語は利用していない。
IDPF(元のOpen eBook)のOPS, OPF, OCFはいずれもRELAX NGスキーマを備えている。W3C XML Schemaは使っていない。なんとNVDLまで使っている。
これらへのリンクは、RELAX NG公式サイトのスキーマのページ に示した。
OOXMLもODFもRELAX NGスキーマを備えているので、OOXML文書・ODF文書の検証にも用いられるだろう。
投稿者: 村田 真 日時: 2009.02.15 | パーマリンク | コメント (0) | トラックバック (0)
XMLプログラミングコンテストの審査
XMLプログラミングコンテストの審査をする機会があった。同じく審査員の丸山さんとも
意見が一致したのは、自分ではとても作れないということ。
うーん、いかにも若者をいたぶって喜んでいる悪代官だ。「偉そう」には見えるが別に
偉くはない。ちなみに、XMLの父というと当然Jon Bosakであり、私は1996年12月に
加わった新参者にすぎないので為念。
投稿者: 村田 真 日時: 2009.03.12 | パーマリンク | コメント (0) | トラックバック (0)