HTMLは、ISO 8879:1986−標準汎用マーク付け言語(SGML)のアプリケーションです。SGML(Standard Generalized Markup Language)は、構造化された文書タイプやマーク付け言語を定義するシステムで、この文書タイプ[SGML]のインスタンス(文書実例)を表示します。HTML文書型定義の公開テキスト−DTDやSGML宣言−は、 HTML Public Textセクションに用意されています。
HTMLという用語は、ここの文書型定義と文書タイプの実現値(インスタンス)の表示するためのマーク付け言語の二つを参照します。
HTML文書は、一つのSGML文書です:言い替えると、物理的に実体セットに組織化され、論理的に要素の階層として組織化された一連の文字(符号)
SGML仕様書でのSGML構文文法ではまず、 SGML文書を三つの部分に分けます:SGML宣言・プロローグ・インスタンス(実現値)です。仕様書の目的にとって、プロローグはDTDです。このDTDは、別の文法を記載します:開始シンボルはdoctype宣言内に与えられ、終はデータ文字やタグで、 要素宣言によってその文法が決められます。インスタンスは、 DTDに適合しなければなりません、即ち この文法で定義された言語でなければなりません。
SGML宣言は文法の用語集です。それは、 文書文字セットを特定し、文書にくるテキスト実体に現われる全ての文字を含む文字目録を決定します。
またSGML宣言は、文書の構文−参照文字セットとSGML構文要約を堅固な構文と結び付ける幾つかのパラメーターを特定します。この堅固な構文は、文書の一連の文字がプロローグの文法で一連の末端部にどのように一致させるか(マッピング)を決定します。
例えば、次の文書を考えてみます:
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> <title>Parsing Example</title> <p>Some text. <em>*wow*</em></p>
HTML 表示代行手段は、 HTMLのためのSGML宣言セクション にあるSGML宣言をつかわなければなりません。 文書文字セットに従えば、 `*'はアスタリック文字, `*'を参照します。
上の例は、以下の一連の末端部のように見做されます:
DTD文法の最初のシンボルはHTMLで、この産物は`-//IETF//DTD HTML 2.0//EN'によって同定された公開テキストに与えられています。上記の端末部は以下のように解析されます:
HTML
|
\-HEAD
| |
| \-TITLE
| |
| \-<TITLE>
| |
| \-"Parsing Example"
| |
| \-</TITLE>
|
\-BODY
|
\-P
|
\-<P>
|
\-"Some text. "
|
\-EM
| |
| \-<EM>
| |
| \-"*wow*"
| |
| \-</EM>
|
\-</P>
要素のなかには、タグによってはっきりと区切られているし、一方では境界は推測されるようになっているものもあります。 HTML要素は、 HEAD要素と BODY要素を含んでいます。 HEADはTITLEを含み、開始終了タグではっきりと区切られています。
SGMLは、構文の概要と堅固な参照構文を定義します。ある種の質や能力(例、名前の長さについての制限)を除いて、全てのHTML文書は堅固な参照構文を使います。特に全てのマーク付け文字は、 [ISO-646]目録にあります。データー文字は文書文字セットから引き出されてきます( Characters, Words, and Paragraphsセクション参照)。
SGML解析の完全な議論、例、一連の文字の一連のタグやデータへのマッピング、は SGML標準[SGML]で述べます。この仕様書では、要約だけです。
マーク付けを構成しない一連の文字は如何なるものでも( [SGML]の9.6 "Delimiter Recognition"を参照)、直接データー文字列をマッピング(割り付け)します。またある種の マーク付けは、 データ文字列にマッピングします。数値参照は、 文書文字セットに従って、一つ(シングル)の文字列にマッピングされます。 HTMLDTDで定義されている一般的な実体は、単一の 文字列にマッピングします。
例えば:
abc<def => "abc","<","def" abc<def => "abc","<","def"
実体や数値参照にある末端のセミコロンは、参照に続く文字が名前(name)の一部分として認められる場合にのみ必要です( [SGML]の9.4.5 "Reference End"を参照)。
abc < def => "abc ","<"," def" abc < def => "abc ","<"," def"
アンパーサンドは、文字か`#'や数値が続く場合マーク付けとして認められます:
abc & lt def => "abc & lt def" abc &# 60 def => "abc &# 60 def"
平叙文をHTMLに変換する際の有効な技術として、各'<', '&', and '>' を実体参照か数値文字で、以下のように起き代えます。
ENTITY NUMERIC
CHARACTER REFERENCE CHAR REF CHARACTER DESCRIPTION
--------- ---------- ----------- ---------------------
& & & Ampersand
< < < Less than
> > > Greater than
タグは、見出し・パラグラフ・リスト・highlighting 文字やリンクといった要素を区切ります。大部分のHTML要素は、文書内で開始−タグとして同定されていて、 要素名や属性を与え続いて内容が来て終了タグと続きます。開始−タグは `<'と`>'で区切られ;終了タグは`</'と`>'で区切られます。例として:
<H1>This is a Heading</H1>
ある種のタグは、 終了−タグがなく開始−タグしか持たないものもあります。例えば、行改行をするには、 `<BR>'タグを使います。更に、パラグラフ(`</P>')・リスト項目(`</LI>')・定義用語(`</DT>')や 定義説明要素(`</DD>')といったある種の要素の終了タグは、省略することもあります。
要素の内容は、一連の データー文字列やいれ子された要素です。アンカーといった要素は、いれ子できません。アンカーと強調文字は、別の構造内に置くこともできます。詳しくは、 HTML DTD、 HTML DTDセクションを見てください。 (6)
名前は、文字・数値・ピリオドやハイフェンから構成されます。名前の長さは、72文字に制限されています。これは、 SGML Declaration for HTMLセクション、HTMLのためのSGML宣言の`NAMELEN'パラメーターで規定されています。 要素と属性名は、大文字小文字の区別はありませんが、 実体名では区別します。例えば、 `<BLOCKQUOTE>'・ `<BlockQuote>'・ `<blockquote>'は同じですが、 `&'と`&'は異なります。
開始−タグ内で、 要素名はタグオープン区切り符号に直ぐ続かなければなりません。
開始−タグ内で、 要素名とクローズ区切り符号との間に空白スペースと属性が許されます。属性の仕様は、典型的には属性名・等号記号(=)・値から構成されていますが、或る属性仕様はだた名前字句(名前トークン)のものもあります。空白スペースは、等号記号を囲みます。
属性の値は、以下のようになります:
この例で、imgが要素名、 srcが属性名、 `http://host/dir/file.gif'が属性値です:
<img src='http://host/dir/file.gif'>
ある文字列のために属性値を正しくコンピュータ化する有用なテクニックは、引用符号や空白スペース文字を 実体参照か 数値参照で以下のように置き代えることです:
ENTITY NUMERIC
CHARACTER REFERENCE CHAR REF CHARACTER DESCRIPTION
--------- ---------- ----------- ---------------------
HT 	 Tab
LF Line Feed
CR Carriage Return
SP   Space
" " " Quotation mark
& & & Ampersand
例えば:
<IMG SRC="image.jpg" alt="First "real" example">
SGML宣言(SGML Declaration for HTMLセクション)での`NAMELEN'パラメータは、属性値の長さを1024と制限しています。
ISMAPとCOMPACといった属性は、最小化構文を使って書かれます([SGML]の7.9.1.2 "Omitted Attribute Name"を参照)。 マーク付け:
<UL COMPACT="compact">
最小化構文を使って書くと:
<UL COMPACT>
HTML文書にコメントを書くには、コメント宣言を使います。コメント宣言は、 `<!'続いてコメント更に続いて`>'と書きます。各コメントは`--'ではじまり、全テキストを次の`--'までに書きます。コメント宣言では、スペースは各コメントの後に許されますが最初のコメントの前では許されません。コメント宣言は、無視されます。 (10)
例えば:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HEAD> <TITLE>HTML Comment Example</TITLE> <!-- Id: html-sgml.sgm,v 1.5 1995/05/26 21:29:50 connolly Exp --> <!-- another -- -- comment --> <!> </HEAD> <BODY> <p> <!- コメントではありません、単に古いデータ文字です。 ->
この仕様書に適合している(準拠) HTML文書として情報を識別するには、各文書は以下の文書型宣言の一つで開始しなければなりません。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
この文書型宣言は、 HTML DTDセクションのHTMLDTDを参照します。 (11)
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Level 2//EN">
この文書型宣言は、 HTML DTDセクションにあるHTML DTDを参照します。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Level 1//EN">
この文書型宣言は、 Level 1 HTML DTDセクションにあるレベル1 HTMLDTDを参照します。フレーム要素は、レベル1文書にはくるべきではありません。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict//EN"> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0 Strict Level 1//EN">
これらの文書型宣言はは、 Strict HTML DTDセクションと Strict Level 1 HTML DTDセクションのHTMLDTDを参照します。これらは、HTMLの構造的に厳密な定義を参照します。
HTML表示代行手段は、別の文書タイプをサポートしているかもしれません。特に、別の正式な公開識別子や他の文書タイプを一緒にをサポートしているかもしれません。 実体・ 要素・別の マーク付け宣言を装備してインターネット宣言サブセットをサポートしているかもしれません。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
<!-- Here's a good place to put a comment. 注:英文での場合は-->
<HEAD>
<META http-equiv="content-type" content="text/html; charset=iso-2022-jp">
<!-- 注:日本語では、文字指定後に -->
<TITLE>構造例</TITLE>
</HEAD>
<BODY>
<H1>First Header</H1>
<P>
これはサンプルGTMLファイルでのパラグラフです。タイトルは文書文内に表示され
ませんが、見出し(H1で定義された)は現われることに注意して下さい。
</P>
<OL>
<LI>序列リストの最初の項目
<LI>序列リストの二番目の項目
<UL COMPACT>
<LI> リストは入れ子ができることに気付いて下さい;
<LI> Whitespacemay be used to assist in reading the
HTML source.
</UL>
<LI>序列リストの三番目の項目
</OL>
<P>
これは追化されたパラグラフです。技術的には終了タグはパラグラフの必須では
ありません、使ってもいいのですが。パラグラフ内に強調文字が使えます。
<EM>パラグラフのこのセンテンスは強調されています。</EM>
</P>終了タグが省略されていることに注意して下さい。
<P>
<IMG SRC ="triangle.xbm" alt="Warning: ">
この<b>太字指示</b>を確実に読んで下さい。
</BODY>
</HTML>