XHTML+CSS (r)evolution

July 6, 2006
Apple Store Ginza

イントロダクション

このスライドは誰でもアクセスできます

スライドのURL
http://www.cybergarden.net/revolution/20060706/
スライドシステム (モダンブラウザ向け)
W3C® HTML Slidy (XHTML+CSS+JavaScript)

このイベントについて

主催/出演
益子貴寛 (サイバーガーデン)
協力
CSS Nite
withD
VanaDesign
allWEBクリエイター塾
公式ブログ
http://www.cybergarden.net/revolution/

コンセプト

XHTML+CSSevolution (進化)revolution (変革) を。

テーマ

まずはご意見から (1)

とあるWEBクリエイターのblogさんより

XHTML+CSSに足りない5つのコト

  1. 各社ブラウザのバージョンによる解釈の違い
  2. CSSのデザイン能力の表現力の乏しさ
  3. XHTMLの構造を示すタグがちょっと足らないのでは?
  4. やや独自の路線を暴走するW3C
  5. 現場の人手不足

まずはご意見から (2)

F+R (FplusR) さんより

HTML+CSSに足りない要素

  1. サイト名 (CI、ロゴなど) に関するタグ
  2. 著作権に関するタグ (copyright要素の提案)
  3. 連絡先 (住所、電話番号など) に関するタグ
  4. 検索とフォームに関するタグ

テーマ1:
XHTML
足りないコト

ボキャブラリ (要素・属性) が少ない

現状
div/span要素とid/classによるボキャブラリの擬似拡張。
現在の(X)HTMLに用意されている要素や属性では、現在求められるさまざまなWebコンテンツを適切にマークアップし切れない。
一方で
どこからどこまで決めればよいのか?
よい意味での「あいまいさ」が失われるのでは?
ユーザー/制作者の習得の負担が増加するのでは?
仕様設計がより複雑になるのでは?

あると便利なインターフェイス定義要素

足りない要素/属性を考えるときに参考になる資料 (1)

Web Applications 1.0 (HTML 5)
http://whatwg.org/specs/web-apps/current-work/
microformats
http://microformats.org/
DCMI Metadata Terms
http://dublincore.org/documents/dcmi-terms/
RSS 2.0
http://blogs.law.harvard.edu/tech/rss
Atom 1.0
http://www.ietf.org/rfc/rfc4287.txt

足りない要素/属性を考えるときに参考になる資料 (2)

FOAF
http://www.foaf-project.org/
Googleによる一般的なclass名調査
http://code.google.com/webstats/2005-12/classes.html

h1-h6要素の限界 (1)

理想 (ISO-HTMLに基づく)
h1からはじめること。
途中レベルの見出しを飛ばさない (h1→h2→h3...という階層構造を守る)。
問題点
理想的な階層構造であっても、見出しが及ぶ範囲がわかりにくいという仕様設計上の欠点は乗り越えられない。人間であれば、h1、h2、h3という順序をツリー構造として頭に思い描くことができる。しかし、ソース上はどの見出しレベルも完全にフラットな関係。

h1-h6要素の限界 (2)

<h2>カテゴリー</h2>
<ul>
  <li>項目1</li>
  <li>項目2</li>
  <li>項目3</li>
</ul>
問題点
見出しはページ全体の文脈上の存在。書式上は全く問題ないが、見出しとリストが直接結びつけられているわけではない (dl要素の多様な使い方が正当化される理由)。

address要素の限界

特徴
address要素は「作成者情報」。実務的には、著作権情報などを含む「フッター情報」のマークアップによく使われる。
問題点
XHTML 1.0 S/1.1で包含可能な内容
テキスト/インライン要素
XHTML 1.0 T/Fで包含可能な内容
テキスト/インライン要素、ins、del、script、p要素

いずれにしても多目的に使うには限界が。

ins/del要素の限界

特徴
ins要素は「追加文」、del要素は「削除文」。使い方によってインラインにもブロックレベルにもなる特殊な要素。
問題点
リスト項目 (li要素、dt/dd要素) ごと追加/削除することができない。ins/del要素はブロックレベル要素を含むことができるが、ul要素やdl要素の子要素となることはできないため。

属性の順序 (1)

<img height="300" width="400"
alt="2006年バリ島旅行の写真" src="bali2006.jpg" />
違和感
属性にも「優劣」があるのでは? たとえば
  • 必須属性かどうか (例: img要素のsrc/alt属性)
  • 常識的な判断 (例: width属性の次にheight属性)
  • 仕様での出現順序

属性の順序 (2)

例: img要素に指定可能な属性 (XHTML 1.0 S)
<!ELEMENT img EMPTY>
<!ATTLIST img
  %attrs;
  src         %URI;          #REQUIRED
  alt         %Text;         #REQUIRED
  longdesc    %URI;          #IMPLIED
  height      %Length;       #IMPLIED
  width       %Length;       #IMPLIED
  usemap      %URI;          #IMPLIED
  ismap       (ismap)        #IMPLIED
  >

残されている視覚表現に関する要素/属性

XHTML 1.0 S/1.1でも、次の要素/属性が残されている。

これらはすべて、XHTML 2.0では廃止予定。

なお、sup要素とsub要素はテキストモジュールへ、hr要素は「separator要素」に生まれ変わって構造モジュールへ。

テーマ2:
XHTML 2.0で
どこまで克服されるか

見出しの階層構造 (1)

h要素とsection要素が導入予定。これらの組み合わせ/入れ子によって、階層構造を示すことができる。

<h>大見出し</h>
<section>
  <h>中見出し</h>
  <p>パラグラフ</p>
  <section>
    <h>小見出し</h>
    <p>パラグラフ</p>
    <h>小見出し</h>
    <p>パラグラフ</p>
  </section>
</section>

見出しの階層構造 (2)

しかし
h1-h6要素も残されている。
番号型 (h1-h6型) と構造型 (h/section型)

There are two styles of headings in XHTML: the numbered versions h1, h2 etc., and the structured version h, which is used in combination with the section element.

番号型と構造型の併用は可能か? (おそらく不可)

href属性が便利に

これまで
a/link要素の属性でしか使えなかった。
<ul>
  <li><a href="...">項目1</a></li>
  <li><a href="...">項目2</a></li>
</ul>
XHTML 2.0では
<ul>
  <li href="...">項目1</li>
  <li href="...">項目2</li>
</ul>

src属性が便利に

これまで
img/script要素などの属性でしか使えなかった。
<img src="images/logo.gif" alt="○○株式会社" />
XHTML 2.0では
<p src="images/logo.gif">○○株式会社</p>
<span src="images/logo.gif">○○株式会社</span>
このように、alt属性の代わりに要素内容として代替テキストを含める。

XHTML 2.0 追加要素

要素名 モジュール 内容
access Role Access アクセシビリティ機能割り当て
blockcode Structural コンピュータコードのブロック
di List 定義項目 (dtとddのグループ化)
h Structural 構造型の見出し
handler Handler ハンドラの定義
l Text テキストの各行
nl List ナビゲーションリスト
quote Text インラインの引用文 (≒ q要素)
section Structural セクション定義
separator Structural ページ内の区切り (≒ hr要素)
standby Object ローディング中のメッセージ
summary Table 表の要約文 (≒ summary属性)

XHTML 2.0 追加属性 (代表例)

属性名 モジュール 内容
about Metainformation あるプロパティのリソース (DCなど) の特定
edit Edit Attributes テキストの追加や削除 (≒ ins/del要素)
full Text 省略語の詳細説明URI
hrefmedia Hypertext Attributes href属性のターゲットメディア
hreftype Hypertext Attributes href属性のコンテントタイプ
key Role Access ショートカットキー (≒ accesskey属性)
nextfocus Hypertext 次のフォーカス (≒ tabindex属性)
prevfocus Hypertext 前のフォーカス (≒ tabindex属性)
layout Core 空白文字の処理

XHTML 2.0 追加要素/属性

その他、

などに関する要素/属性が追加予定。

Web Applications 1.0 からの批判

1.4. Relationship to XHTML2 より (大意)

XHTML 2.0は、新たなボキャブラリを追加しているものの、依然として単純な文書型コンテンツを念頭に置いた仕様設計であり、たとえばフォーラムサイトやオークションサイト、検索エンジン、オンラインショップなどの非文書型コンテンツ (the non-document types of content) を表現する要素が足りない。

仕様が想定するコンテンツと現在広く求められているコンテンツとのミスマッチを指摘。

XHTML 2.0モジュール一覧 (1)

モジュール名 属する要素/属性
Document body, head, html, title
Structural address, blockcode, blockquote, div, h, h1, h2, h3, h4, h5, h6, p, pre, section, separator
Text abbr, cite, code, dfn, em, kbd, l, quote, samp, span, strong, sub, sup, var
Hypertext a
List dl, dt, dd, label, nl, ol, ul, li
Core Attributes class, id, and title attributes

XHTML 2.0モジュール一覧 (2)

モジュール名 属する要素/属性
Hypertext Attributes href, hreftype, cite, target, rel, rev, access, nextfocus, prevfocus, and xml:base attributes
I18n attribute xml:lang attribute
Bi-directional Text dir attribute
Edit Attributes edit and datetime attributes
Embedding Attributes src and type attributes
Handlar handler
Image Map Attributes usemap, ismap, shape, and coords attributes
Media Attribute media attribute

XHTML 2.0モジュール一覧 (3)

モジュール名 属する要素/属性
Metainformation Attributes about, content, datatype, property, rel, resource, restype, and rev attributes
Metainformation meta, link
Object object, param, standby
Style Attribute style attribute
Stylesheet style element
Tables caption, col, colgroup, summary, table, tbody, td, tfoot, th, thead, tr

外部定義モジュール: Ruby Annotation、XFormsXML Events

テーマ3:
CSS
足りないコト

背景画像のサイズ指定

現状
背景画像のサイズ指定ができない
解決策
background-sizeプロパティの導入。
div#content {
  background-color: ...;
  background-image: ...;
  background-size: 100% 100%;
  }

フロートの上下位置指定

現状
フロートの位置指定は左右のみ。上下位置は指定できない。自動的に上に寄る。
解決策
top/bottom値の導入。
p.note {
  float: left bottom;
  }

テキスト装飾の種類

現状
テキスト装飾は下線、上線、一重打ち消し線、点滅のみ。
解決策
二重打ち消し線、影つき (text-shadowのような) などの値の導入。
em {
  text-decoration: double-line-through;
  }

そもそも「視覚表現」という言葉は

CSSには「聴覚表現」の仕組みも用意されている (音声スタイルシート)。将来的には「触覚表現」(点字出力など) の仕組みが用意されるかもしれない。

「視覚表現」や「見栄え」に代えて、どのような言葉を使えばよいか模索中。単に「表現」 (presentation) でもよいのだが、日本語の語感としてはややあいまい。

テーマ4:
CSS3で
どこまで克服されるか

CSS3では

プロパティだけでなく、セレクタや擬似クラス/擬似要素が大幅に増える予定。しかも、モジュールごとに別途定義される場合もある。

CSS3モジュール一覧 (1)

モジュール名 内容
Introduction イントロダクション
Syntax 構文
Selectors セレクタ
Values 値と単位
Cascading カスケード処理と継承
Box model ボックスモデル
Positioning 位置指定
Color
Backgrounds & Borders 背景とボーダー
Line
Text Effects テキスト効果
Text Layout テキストレイアウト

CSS3モジュール一覧 (2)

モジュール名 内容
Ruby ルビ
Fonts フォント
Web Fonts Webフォント
Generated 生成内容と置換内容
Lists リスト
Paged ページメディア
Generated Paged ページメディア向け生成内容
UI ユーザーインターフェイス
Tables テーブル
Columns マルチカラムレイアウト
Math 数式
Speech スピーチ

CSS3モジュール一覧 (3)

モジュール名 内容
Media メディアクエリ
Media2 メディアクエリ2
CSS-OM CSSオブジェクトモデル
Hyperlinks ハイパーリンク
Presentation プレゼンテーションレベル
Style attr スタイル属性
Reader 読み上げメディア
Adv. layout 高度なレイアウト
Audio 音響効果

プロファイル: MobileTVPrint

テーマ5:
dl要素の
応用例

お問い合わせフォーム

<dl>
  <dt>お名前</dt>
  <dd><input type="text" ... /></dd>
  <dt>Eメール</dt>
  <dd><input type="text" ... /></dd>
  <dt>URL</dt>
  <dd><input type="text" ... /></dd>
  <dt>コメント</dt>
  <dd><textarea></textarea></dd>
  <dd><input type="submit" value="送信" /></dd>
</dl>

ガクさんのご意見

会社案内

<dl>
  <dt>社名</dt>
  <dd>...</dd>
  <dt>代表</dt>
  <dd>...</dd>
  <dt>所在地</dt>
  <dd>...</dd>
  <dt>電話番号</dt>
  <dd>...</dd>
   :
</dl>

floralさんのご意見

会社沿革 (年表)

<dl>
  <dt>1985年6月</dt>
  <dd>(出来事)</dd>
  <dt>1986年3月</dt>
  <dd>(出来事)</dd>
  <dt>1988年8月</dt>
  <dd>(出来事)</dd>
  <dt>1993年2月</dt>
  <dd>(出来事)</dd>
   :
</dl>

たまくろうさん、creamさんのご意見

役員紹介

<dl>
  <dt>代表取締役</dt>
  <dd>...</dd>
  <dt>専務取締役</dt>
  <dd>...</dd>
  <dt>常務取締役</dt>
  <dd>...</dd>
  <dd>...</dd>
  <dd>...</dd>
   :
</dl>

creamさんのご意見

ナビゲーションメニュー

<dl>
  <dt>カテゴリー1</dt>
  <dd>...</dd>
  <dd>...</dd>
  <dd>...</dd>
  <dt>カテゴリー2</dt>
  <dd>...</dd>
  <dd>...</dd>
  <dd>...</dd>
   :
</dl>

floralさんのご意見

サイトマップ

<dl>
  <dt>カテゴリー名</dt>
  <dd>(説明文)
    <dl>
      <dt>ページ名</dt>
      <dd>(説明文)</dd>
      <dt>ページ名</dt>
      <dd>(説明文)</dd>
    </dl>
  </dd>
   :
</dl>

銀子さんのご意見

日付と新着情報

<dl>
  <dt>2006年7月6日</dt>
  <dd>(新着情報)</dd>
  <dt>2006年7月5日</dt>
  <dd>(新着情報)</dd>
  <dt>2006年7月4日</dt>
  <dd>(新着情報)</dd>
  <dt>2006年7月3日</dt>
  <dd>(新着情報)</dd>
  <dt>2006年7月2日</dt>
  <dd>(新着情報)</dd>
</dl>

Q&A (FAQ)

<dl>
  <dt>Q1:</dt>
  <dd>(質問)</dd>
  <dt>A1:</dt>
  <dd>(回答)</dd>
</dl>

または

<dl>
  <dt>Q1: (質問)</dt>
  <dd>A1: (回答)</dd>
  <dt>Q2: (質問)</dt>
  <dd>A2: (回答)</dd>
</dl>

リンクリスト

<dl>
  <dt>(サイト名)</dt>
  <dd>(URL)</dd>
  <dt>(サイト名)</dt>
  <dd>(URL)</dd>
</dl>

または

<dl>
  <dt>(サイト名)</dt>
  <dd>(説明文)</dd>
  <dt>(サイト名)</dt>
  <dd>(説明文)</dd>
</dl>

商品 (画像) リスト

<dl>
  <dt><img /></dt>
  <dd>(商品説明)</dd>
  <dt><img /></dt>
  <dd>(商品説明)</dd>
  <dt><img /></dt>
  <dd>(商品説明)</dd>
  <dt><img /></dt>
  <dd>(商品説明)</dd>
   :
</dl>

引用元と引用文

<dl>
  <dt>
    <cite>(引用元)</cite>
  </dt>
  <dd>
    <blockquote>
      <p>(引用文)</p>
    </blockquote>
  </dd>
</dl>

ソースコード

<dl>
  <dt>(タイトル)</dt>
  <dd>
    <pre>(ソースコード)</pre>
  </dd>
</dl>

その他

本スライドのソースもご参照ください (dl要素を積極利用しています)。

便利な使い方 (1)

dd要素が長くなる場合、p要素で適宜パラグラフ分けするとよい。もちろん他のブロックレベル要素を使ってもよい。

<dl>
  <dt>(用語)</dt>
  <dd>
    <p>(解説 1段落目)</p>
    <p>(解説 2段落目)</p>
     :
  </dd>
</dl>

便利な使い方 (2)

dt要素とdd要素はお互いに複数対応させることができる。

<dl>
  <dt>タラバガニ</dt>
  <dt xml:lang="en">King Crab</dt>
  <dd>北海道沿岸からオホーツク海、アラスカが主産地で、
  鱈(たら)と漁場が重なるためにこの名前がついています。
  旬は11月から3月頃。実はやどかりの仲間で、はさみを含めて
  脚が8本しかありません。食べ応えのある太い身が特徴で、
  味は上品で淡白。焼きガニや鍋で食すのが一般的です。
  実は30年前後は生きる長寿ガニです。</dd>
</dl>

まとめ

ただ、「本来の目的」と「自由な発想」の間で揺れる悩ましさ (どこまで自由に使っていいのか?) もある。

リファレンス

テーマ Extra:
最後に

ちょっとお知らせ

そして...

CSS Nite & Web標準Blog presents

The Day of Web Standards[Web標準の日]

2006年7月15日 (土) 11:00-21:00

六本木アカデミーヒルズ49 タワーホール

ありがとうございました。
Thank You.