Blog

※ブログ移転しました。 → hamashun.me

Web標準の日々レポート 「複合文書から見たXHTML+CSSとスキーマ活用」 石川雅康さん

2007-07-12 スキーマトロン(の補足)に追記・及び誤字・ソース(ショートカット効いてない問題)修正

ショートカットメニュー

このレポートの概要

途中からだったので、全ては聞けませんでしたけど難しい内容でした。
現時点では、一般の製作者というよりはマニア向け 。

内容は、W3Cで活動されていた石川さんが、自身が策定に関わった仕様などについて語ってくれるというもの。
将来的にXHTMLは複数のマークアップ言語を一緒に使える(SVGやMathMLとか)という話を中心に、スキーマとかW3C裏話なんかも。

石川さんは「仕様」について深く関わってきた人なので、その辺りを意識しながら読むといいかもです。
最後のオマケには、懇親会でのちょい話もあります。

あと、僕にとって多分に未知の領域なので、間違っている部分もあるかと思います。
誤りを発見されましたら、ご指摘頂けますと嬉しいです。

まず知っておくべき事(ざっくりと)

SVG
絵を描く為のマークアップ言語。 手打ちだと才能の無駄使いクラス
MathML
数式の為のマークアップ言語。 ブラウザだけでなく、数学的なアプリケーションでも使える
XML複合文書(以下複合文書)
複数のXML言語を一緒に使う文書(XHTML+SVG+MathML など)
スキーマ
XML文書のルール。 DTDをスキーマ言語の例として挙げると解りやすい。 検索するとDB系の情報がヒットしやすいので、「XML スキーマ」とすると良い
名前空間(の指定)
XHTMLのa要素とSVGのa要素、普通に書いたらどっちのa要素か解らない→「この中はXHTMLの空間だよ」と示してあげる

ルビの話

部屋に入ったと同時に終わったので、他の人のまとめに期待。

MIMEの話

『XHTMLならXMLとして扱って欲しい』と言っていた。
なお、メモ用紙とかを用意しながら聞いてたので、一部完全ではないかも。

  • 仕様書は、text/html版とapplication/xhtml+xml(application/xmlだったかも? スライド公開待ち)版の両方がある
  • application~の方は、(ソースを開いて見ると)タグの書き方もよりXMLぽく書いている
  • その辺りの空気を読んで欲しい(XHTMLはXMLベースである)
  • XHTMLにtext/htmlを使うぐらいなら、いっそHTML4.01にしてしまえ(これは、本気では言ってないけど本音かも、と感じました)

複合文書の話

複合文書には、2種類の方法がある。
一つは、現在の感覚と近い方法で、object要素などで外部リソースを参照するという物。

もう一つは同じXHTMLファイル内に埋め込む事で実現する方法。
これは説明するより例の方がわかりやすいので、XML 複合文書の可能性と課題に載っているXHTML と MathML と SVG の混在例を見るとよい。
ソースを見ると、XHTMLの中に

<math xmlns="http://www.w3.org/1998/Math/MathML"> ~ </math>

<svg:svg xmlns:svg="http://www.w3.org/2000/svg"
  width="8cm" height="8cm" viewBox="0 0 100 100"> ~ </svg:svg>

こんな感じの記述がある。 xmlns属性で名前空間を指定する事で、その中に異なる文書を記述している。
前述の方法よりこちらが理想。

ちなみに、この例のDTDを見てみると、超長くて眩暈がする(15.000行を超える! ちなみにXHTML1.0 Transitional は1.200行)。
これはXHTMLとSVGとMathMLのそれぞれの組み合わせを書いているから。
3通りだけでもコレなのに、(他の言語もあわせると?)全部で23通りの組み合わせがある。
『本気でやりたいなら、俺の屍を超えて行け!』との事。

XHTML2の話

よく「XHTML2はあれが足りない。これが足りない」という声が上がるが、XHTML2は複合文書の土台になるようにしてある。 言うなればプレーン・ピザ。
なので、単体で見てアレコレ考えるのは違う。 また、HTML5と単純に比較するのも、石川さん個人の考えでは「違う」

SVGの話

  • SVGは、仕様自体が最近できた為、洗練されている(モダンな仕様)
  • SVGはケータイブラウザで普及が進んでいる
  • それはベクター画像だから、機種によって画面サイズが異なっても、きれいに全画面表示できるから
  • ネットフロントや、Operaモバイル9で現在対応済み
  • PCブラウザでも、モダンブラウザでは結構対応している

複合文書での名前空間

例えば、XHTMLでのa要素とSVGでのa要素を、複合文書にただ書いただけでは、どちらがどちらかが解らない。
なので、名前空間を指定してやる必要がある。
『名前空間』は、複合文書では必須である。

ちなみに、名前空間を指定しても、DOMとしては持っている。
(複合文書は複数の文書を集めたのではなく、一つの文書内に複数の文書がある、という意味?)

複合文書でのCSS

@namespaceで名前空間を指定する必要がある。

アドレスバーに属性をコピペする?

XHTMLから属性のみを抜き出して、アドレスバーにペーストする。
OperaではStyleが適用されたりする(これがスクリーンから遠くてよく見えませんでした。 他の方のまとめに期待)。

スキーマの話

  • 色んなスキーマがある(スライド公開待ち)
  • スキーマは基本的に、一部分だけ書く、というのはできない。 一度書き出すと全部書かないといけない。 故に、仕様を書くにはいいが、普通の製作者には向かない
  • ただし、Schematron(スキーマトロン)は、スキーマを補足する用途に使える
  • 製作者が使うなら、通常のDTDなどにスキーマトロンを加える、「いい所取り」がおすすめ

DTDの編集

DTDの拡張は考えない方がよい(マニアの領域)。
編集で使いやすくする程度に。

例えば、DTDを読んで入力補完をしてくれるエディタで、onclick属性なんかが出てくるのがウザイ場合。
スキーマを読み書きできるエディタを使って、該当の箇所を上書きなりで修正する(多分、一時的に行う事だと思います)。

スキーマトロン(の補足)

  • やりたい事だけ書く
  • 他のスキーマは、メッセージ(コメントの事?)が英字のみだが、スキーマトロンは日本語が使える
  • アサート:ポジ
  • リポート:ネガ(この二つはよく解らなかった。この辺り不確かですみません)

2007-07-18 追記
コメント欄でiwaimさんと石川さんに補足して頂けました。 ありがとうございます!

その他(質疑応答含む)

  • 複合文書の検証をコマンドラインで行うには、NVDLスクリプトを使う
  • 石川さんオススメのエディタはoXygen/(オーキシェン)。 シェアウェアでJAVAベース
  • HTML Slidyはスキーマトロンを使っている? (ソースを見たけどよく解りませんでした)
  • XHTML2とHTML5は、お互いを尊重した方がいい(争ってばかりいると、いつまでたっても進まない)
  • Ian Hicksonは個人としてHTML5に関わっている。 HTML5イコールGoogleの総意、という訳ではない。 でも、ちょっとは何かあるかも?(Googleのみぞ知る?)。
  • 標準に関わる者は、何か業を背負っているような(同じ人達が同じ業界をグルグル転職してる)

オマケ

Web標準の日々終了後の懇親会で、石川さんとiwaimさん達と膝突合せトークをする機会に恵まれました。
何でも現在、石川さんは後任を探しているんだとか(もちろん、いきなり全部を引き継ぐという訳じゃなくて、最初はお手伝いみたいのから)。

石川さんが危惧しているのは、後任が日本人以外になってしまって、日本人とW3Cとの結びつきが益々薄くなってしまう事だそうです。 我こそはと思う方は、石川さんに熱意を伝えてみてはいかがでしょうか。
あ、ただ、世界中から総叩きにあっても大丈夫なくらいの精神力が必要だそうです。

TracBack

Reference Entry:  Web標準の日々レポート 「複合文書から見たXHTML+CSSとスキーマ活用」 石川雅康さん:

info from 1432 » [web][HTML]Web標準の日々レポート 「複合文書から見たXHTML+CSSとスキーマ活用」 石川雅康さん
text/htmlに関する話は、自分でXHTML作成していても、気にはなっていた。 多分、もっと詳しい人なら嫌がるのだろうなぁと位にしか思っていなかった...
TracBack Time:  2007年07月18日 08:56

3 Comment

Schematronのところですが、assert要素とreport要素について軽くコメントします。それぞれ、rule要素の子要素として存在できます。そして、rule要素のcontextぞくせいで指定したノードに対してのtestを記述ができます。assert要素では、testがエラーになったときにメッセージを出力。report要素では、testがOKだったときにメッセージを出力します。ネガとポジはそういう意味でしょうか。


> 他のスキーマは、メッセージ(コメントの事?)が英字のみだが、スキーマトロンは日本語が使える


他のスキーマだとエラーメッセージなどは実装系にハードコーディングされて埋め込まれていることが多いです。そのため、英語のメッセージが大半。一方、Schematronの仕様では、エラーメッセージなどはスキーマ自身で指定できるとなっていますので、日本語でメッセージを出力させることができます。


> HTML Slidyはスキーマトロンを使っている? (ソースを見たけどよく解りませんでした)


これはどうなんでしょう。Schematronを使った場合の実例としてHTML Slidyを出していましたが、それだけの話なんじゃないかなぁ。


> DTDを読んで入力保管をしてくれるエディタで


「補完」の誤変換ですね。

Name:iwaim | 2007年07月18日 15:53

> > HTML Slidyはスキーマトロンを使っている? (ソースを見たけどよく解りませんでした)


> これはどうなんでしょう。Schematronを使った場合の実例としてHTML Slidyを出していましたが、それだけの話なんじゃないかなぁ。


それだけの話です。ポイントは、元となる XHTML 文書の文書型 (= グローバルなルール) として何を選択してもそれとは独立して Slidy 用 Schematron スキーマ (= ローカルなルール) を適用できること、Slidy には他にも色々と決まりがありますがそれらを全部記述しよう、などと気張らなくても自分達にとって重要なところだけチェックすればいい、というところです。

当日使用したスライドではデモをお見せする前提であまり詳しく書いていないので、デモ画面のスクリーンショット等を追加して公開する予定です。

Name:石川 | 2007年07月18日 16:27

>iwaimさん
補足ありがとうございます!
「assert・report」とはそういう事だったんですね。
誤字のご指摘もありがとうございます。 早速修正しました。


>石川さん
更なる補足をありがとうございます!
追加要素が加わるスライドが、今から待ち遠しいです。


お二人ともありがとうございます。
おかげさまで自分の頭の中で不明瞭だった部分がいくつかすっきりして、理解が深まりました。

Name:Shun( hamashun ) | 2007年07月19日 00:58

Contribution Form

Blog Search
Search
Recent Entry
Category
Monthly Archive