今さら聞けないHTML5総おさらい 1

HTML5での文法/コンテンツモデル

HTML5での文法/コンテンツモデル

ここでは、HTML5の基本文法を、HTML4/XHTMLからの変更部分にフォーカスして説明します。

(1)DOCTYPE宣言

ブラウザに「標準モード」(*)を使用させたい時にはDOCTYPE宣言の記述が必要です。HTML5では、DOCTYPE宣言の記述が簡潔になりました。

*)CSSを仕様通りに解釈するレンダリングモードの事です。

[サンプル]HTML 4.01 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

[サンプル]HTML5

<!DOCTYPE html>

一方、XHTMLでは、以下のように記述できます。

[サンプル]XHTML 1.0 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

[サンプル]XHTML5

<!DOCTYPE html>
[コラム]XHTMLとは?

XHTML(eXtensible HyperText Markup Language)はXML(eXtensible Markup Language)に準拠するようHTMLを定義しなおしたものです。XHTMLはHTMLよりも厳格な文法で、拡張にも適したXML文書としても扱えるので、一般的なXMLデータ処理プログラムで扱いやすいというメリットがあります。

W3Cは、HTML5の前にXHTMLを次世代のHTML標準規格として普及させようとしていましたが、HTML4.01から乗り換えるメリットは少なく、既にHTML4.01が広く使用されていたためにあまり普及していませんでした。HTML5ではXHTMLも取り込まれており、XMLの文法でも同じドキュメントを記述できるようになっています。これを、XHTML5と呼びますがXHTML5という仕様があるわけではありません。こちらの書き方でもDOCTYPE宣言が簡素化されています。

(2)エンコーディング

エンコーディング指定が簡潔になりました。HTML5では、エンコーディングはutf-8が推奨です。従来の記述も利用できます。

[サンプル]HTML 4.01 Transitional

<meta content="text/html; charset=utf-8" http-equiv="Content-Type" >

[サンプル]HTML5

<meta charset="utf-8">

(3)コンテンツモデル

コンテンツモデルとはその中にどんな他の要素やテキストを含める事ができるか等の観点で要素を分類したものです。従来のHTMLにもブロック要素やインライン要素などの区別がありましたが、HTML5のコンテンツモデルはこれをより厳密に定義したものと考えれば良いでしょう。正しいマークアップを行うには、それぞれの要素がどの分類に属するかを知っている事が重要です。

コンテンツモデルには、7つのカテゴリがあります。複数のカテゴリに属する要素もあります。詳しくは、コンテンツモデルなども参照してください。

表1:コンテンツモデル

カテゴリの名称説明含まれる主な要素
メタデータコンテンツ(Metadata content)ブラウザの表示されない文書のメタデータを定義する要素。他の文書との関係などを表す。base, command, link, meta, noscript, script, style, title
フローコンテンツ(Flow content)ドキュメントやアプリケーションの本体で使用されているほとんどの要素直下に含める事のできる全ての要素
セクショニングコンテンツ(Sectioning content)見出しに対応した範囲「セクション」を定義する要素article, aside, nav, section
ヘッディングコンテンツ(Heading content)セクションの見出しとなる要素h1, h2, h3, h4, h5, h6, hgroup
フレージングコンテンツ(Phrasing content)語句レベルの個別の要素、テキストをマークアップする要素フローコンテンツの要素のうち、以下のもの以外(セクショニング、ヘッディング、details、menu)
エンベッデッドコンテンツ(Embedded content)他のリソースを埋め込む要素、内容がHTML以外の言語によって記述される要素audio, canvas, embed, iframe, img, math, object, svg, video
インタラクティブコンテンツ(Interactive content)ユーザーとの対話のために意図されている要素a, audio(controls属性あり), button, details, embed, iframe, img(usemap属性あり), input(type属性がhidden以外), keygen, label, menu(type属性がtoolbar), object(usemap属性あり), select, textarea, video, (controls属性あり)

HTML5の追加/変更/廃止要素

HTML5では新機能を使用するために新しい要素が追加されています。
また、HTML5ではあくまでも見た目はスタイルシート(CSS)で指定すべきという思想から、見た目に関する要素や属性がいくつか変更・廃止されています。

HTML5で追加された要素

セクショニング関連要素や、マルチメディア埋め込み要素、ユーザーが操作できるUIを定義するインタラクティブ要素が追加されました。

表2:追加された要素

分類追加された要素説明
文章構造化section文書の構造を明示する要素。見出し要素h1~h6とともに使う事が可能
articleブログのエントリやニュース記事のように独立したセクションを示す要素
aside補足やバナーなどなくても文書全体には影響しないセクションを示す要素
hgroup複数の見出し要素h1-h6をまとめる要素
header文章やセクションのヘッダーを示す要素
footer文書やセクションのフッターを示す要素。作者・著作権の情報を含める事が可能
nav文書のナビゲーションがあるセクションを示す要素
figure例えば、画像とキャプションなどを1つのまとまりとして示す要素
figcaptionfigure要素のキャプションを示す要素
テキストの意味づけmark文書内の文字列を参照のためにハイライトさせる要素
time文字列が日付や時間である事を示す要素
data文字列がデータである事を示す要素
ruby漢字にふりがな(ルビ)をふるための要素
rtふりがな(ルビ)を指定する要素
rpルビに対応していないブラウザでルビを括弧に入れて表示するために括弧を記述する要素。ルビに対応するブラウザでは表示されない
bdiアラビア語など方向が異なるテキストにおいて、混乱しないように前後と隔離する部分を示す要素
wbr改行しても良い位置を指定する要素
リソース埋め込みvideo動画ファイルを参照して埋め込む要素
audioオーディオファイルを参照して埋め込む要素
sourcevideo/audio要素において、異なる形式の利用可能な複数のストリームを参照する要素
trackvideo/audio要素にテキストトラック(字幕)を提供する要素
embedプラグインコンテンツを示す要素
canvas動的にビットマップグラフィックス記述するキャンバスを作成する要素
ユーザーとの対話commandユーザーが呼び出し可能なコマンドを示す要素
detailsユーザーがオンデマンドに参照できる追加情報を示す要素
summarydetails要素においてその概要、凡例、またはキャプションを示す要素
datalistinput要素でコンボボックスを実現するための選択肢のリストを示す要素
keygen公開鍵暗号の秘密鍵と公開鍵ペアを生成する要素
値の表示outputスクリプトによる計算結果など出力のための要素
progressタスクの完了度合いを表示する要素
meterディスク使用量のような測定値を表示する要素

(2)HTML5で変更になった要素

見た目を指定する意味がなくなり、テキストの意味を示すだけになった要素などです。

表3:変更された要素

変更要素HTML4.01での意味HTML5での意味
aハイパーリンクハイパーリンクまたはhrefが必須ではなくなり、そのようなa要素は将来のリンクのプレースホルダを示す。他のa要素を含まないブロック要素をマーク可能
address文書の作者への連絡先articleの中ならばそのarticleの作者の連絡先
b太字・強調強調
cite引用元作品名引用元作品名・作者名
dl定義リスト名前と値のグループからなる連想リスト
hr水平線区切り段落区切り
i斜体字分類の指定、技術用語、別の言語、思考などを表現
labelフォームとラベルの関連付けフォームとラベルの関連付け・親でないフォームとも関連付けられる
menuリストコマンドリスト
noscriptJavaScript非対応環境での表示JavaScript非対応環境での表示、head内に配置可能になった
s取り消し線既に正確ではなくなった・関係なくなった内容
scriptスクリプト記述スクリプトまたはカスタムデータブロック記述
smallフォントを小さく表示注釈
strong重要性、強調重要性
u下線はっきりと伝わりにくかったり、本来とは異なった表記を伴うテキスト

(3)HTML5で廃止された要素/属性

HTML要素による文書構造と見た目の指定が混在していると、文書や見た目それぞれの保守性が低下してしまう事から、見た目に関する指定の意味しかない要素は非推奨になりました。

見た目に関する部分はCSSのプロパティで指定する事で代替えできます。また、フレームはブラウザの履歴機能、ブックマーク機能との相性が悪くユーザビリティやアクセシビリティの低下につながるために非推奨になりました。同様な外見を維持したい場合はiframeまたはCSSで指定する事で代替できます。

HTML5で廃止される要素・属性も、HTML5対応ブラウザでは後方互換性の維持の原則によりサポートされます。

表4:非推奨の要素

非推奨の要素名説明代替方法
basefont基準フォントを指定CSSのfontプロパティ
bigフォントを大きく表示CSSのfont-sizeプロパティ
center水平方向の中央揃えCSSのtext-align: centerプロパティ
fontフォントの種類、装飾CSSのfontプロパティ
strike取り消し線CSSのtext-decorationプロパティ
tt等幅フォントで表示CSSのfont-familyプロパティ
appletJavaアプレット埋め込みobjectまたはembed
acronym頭字語である事のマークabbr
dirリストul
isindex検索キーワードの入力欄<input type=search>
listingソースコードなどのテキストをそのまま表示preまたはcode
frameフレーム内容の指定iframeまたはCSS
framesetフレームの表示iframeまたはCSS
noframesフレーム非対応環境での表示-

表5:主な非推奨の属性

非推奨の属性要素説明代替方法
text, bgcolor, background, alink, link, vlinkbody body内のテキストや背景の色CSSのbackgroundプロパティ
align, frameborder, marginheight, marginwidth, scrollingiframe iframeの境界線、スクロールバー指定CSSのborder, margin, scrollingプロパティ
bgcolor, backgroundtable, tr, td, thtable内の背景CSSのbackgroundプロパティ
aligncaption, iframe, img, input, object, legend, table, hr, div, h1-h6, p, col, colgroup, tbody, td, tfoot, th, thead, tr水平の揃え位置CSSのtext-alignプロパティ
languagescriptスクリプト記述言語type
namea, embed, img, option名前id

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored