您的位置:寻梦网首页编程乐园HTML园地HTML 4.0 参考文献

前页 | 后页 | 目录 | 元素 | 特性

SGML 简要指导

目录 追寻梦想·编程乐园·HTML园地·HTML 4.0 参考文献·HTML 文档中的表单
您的位置:寻梦网首页编程乐园HTML园地HTML 4.0 参考文献
  1. 关于 SGML
  2. HTML 语法
    1. 条目
    2. 元素
    3. 特性
    4. HTML 注解
  3. 如何阅读 HTML 的 DTD
    1. 封闭级别和行内元素
    2. DTD 注解
    3. 统一定义
    4. 元素定义
    5. 特性定义
文 档 的 这 部 分 包 含 了 SGML 的 介 绍 信 息 以 及 SGML 与 HTML 的 联 系. 它 讨 论:

关于

标 准 通 常 标 注 语 言 (Standard Generalized Markup Language, SGML, 在 [ISO8879] 定 义), 是 一 种 用 来 定 久 标 注 记 号 的 语 言. HTML 就 是 SGML 的 一 种 "应 用".

一个 SGML 应 用 程 式 包 含 下 列 列 部 分

  1. SGML 声 明. SGML 声 明 指 定 了 哪 些 字 符 和 定 位 符 将 出 现 在 应 用 中.
  2. 文 档 型 式 定 义 (Document type definition, DTD). DTD 定 义 了 标 注 结 构 的 语 法. DTD 可 以 包 含 扩 展 的 定 义 如 数 字 和 字 符 条 目.
  3. 一 份 说 明 书 描 述 了 语 意 学 上 的 标 注. 这 份 说 明 书 也 加 上 了 不 能 在 DTD 中 表 达 的 语 法 的 限 制.
  4. 文 档 实 例 包 含 数 据 (目 录) 和 标 注. 每 一 个 例 程 包 含 了 一 个 DTD 用 来 说 明 的 参 考.
HTML 的 SGML 声明HTML 4.0 DTD 包 含在 这 份 手 册 中, 在 DTD 的 统一设定 参 考 中.

HTML 语法

在 这 部 分 中, 我 们 讨 论 HTML 元 素, 特 性 和 注 解 的 语 法.

统一地

字 符 条 目 是 可 以 被 包 含 于 一 份 HTML 文 档 的 数 字 或 符 号 字 符 名 称. 当 你 的 作 者 工 具 在 输 入 不 常 输 入 的 字 符 时 遇 上 困 难 或 根 本 无 法 输 入 时 它 就 有 用 了. 你 可 以 在 这 份 文 档 中 看 到 这 些 字 符 条 目, 它 们 以 "&" 符 号 开 始 并 以 分 号 (;) 结 束.

我 们 将 在 以 后 的 HTML 字符条目 中 讨 论 这 些 细 节, 参 见 HTML 文 档 字 符 集 的 章 节.

元素

一 个 SGML 的 应 用 定 义 元 素 的 结 构 和 希 望 的 行 为. 一 个 典 型 的元 素 由三 部 分 组 成: 一 个 开 始 标 记, 内 容, 一 个 结 束 标 记.

一 个 元 素 的 开 始 标 记 写 作 <element-name>, 这 里 的 element-name 是 元 素 名 称. 一 个 元 素 的 结 束 标 记 在 开 始 标 记 前 加 上 一 个 斜 杠: </element-name>.
例 如, <pre>The content of the PRE element is preformatted text.</pre>
HTML 的 SGML 定 义 指 出 某 些 HTML 元 素 并 不 需 要 结 束 标 记. 在 本 参 考 手 册 的 每 个 元 素 的 定 义 中 指 出 了 是 不 需 要 结 束 标 记.

一 些 HTML 元 素 没 有 内 容. 如, 换 行 元 素 BR 没 有 内 容; 它 的 唯 一 作 用 就 是 终 止 一 行 文 字. 如 "empty" 元 素 从 来 没 有 结 束 标 记. 在 参 考 手 册 中 的 每 一 个 元 素 的 定 义 都 指 出 是 不 可 以 为 空 (没 有 内 容), 如 果 能 够 有 内 容, 则 讨 论 什 么 是 合 法 内 容.

元 素 名 称 经 常 是 大 小 写 无 关 的. 元 素 不 是 标 记. 某 些 人 们 不 正 确 地 认 为 元 素 就 是 标 记.(如 说 成"P 标 记"). 记 住, 元 素 是 一 件 事, 而 标 记 (无 论 是 开 始 标 记 不 是 结 束 标 记) 则 是 另 一 件 事. 例 如, HEAD 元 素 经 常 存 在, 而 HEAD 开 始 标 记 和 结 束 标 记 甚 至 可 以 不 存 在 于 标 注 中.

特性

元 素 可 能 有 相 关 的 属 性, 叫 做特 性, 作 者 对 分 配 值. 特 性/ 值 对 出 现 在 元 素 开 始 标 记 最 后 的 ">" 之 前. 在 元 素 开 始 标 记 中 可 以 出 现 任 意 数 量 的 (合 法 的) 特 性 数 值 对, 用 空 格 分 开. 它 们 可 以 用 任 意 次 序 出 现. 此 例中, 为H1 元 素 设 定 align 特 性:
<H1 align="center">
This is a centered heading thanks to the align attribute
</H1>
缺 省 的, SGML 要 求 你 用 双 引 号 (")或 单 引 号 (') 括 起 所 有 的 特 性 值. 单 引 号 可 被用 双 引 号 括 起 的 特 性 值 包 含 或 反 之. 你 也 可 以 使 用 编 号 字 符 条 目 来 显 示 双 引 号 (&#34;) 和 单 引 号 (&#39;). 对 于 双 引 号, 你 还 可 以 使 用 命 名 字 符 条 目 &quot;.

在 一 定 情 况 下, 可 能 在 HTML 中 指 定 特 性 的 值 而 无 需 任 何 引 号. 特 性 值 只 能 包 含 字 母 (a-z 和 A-Z), 数 字 (0-9), 短 线 (10 进 制 ASCII 码 45) 和 小 数 点 (10 进 制 ASCII 码 46). 我 们 建 议 即 使 在 可 以 无 须 的 情 况 下 也 使 用 引 号.

特 性 名 称 一 直 是 大 小 写 无 关 的.

特 性 值 通 常 是 大 小 写 元 关 的 . 在 参 考 手 册中 每 个 特 性 的 定 义 时 指 出 它 的 值 是 否 大 小 写 无 关. 注 意: HTML 文 档 可 以 被 压 缩 得 更 小 如 果 使 用 小 写 字 母 来 标 识 元 素 和 特 性 名 称. 这 个 原 因 是 压 缩 算 法 的 工 作 更 流 畅 于 重 复 的 参 数 而 对 于 大 写 字 母 来 说 小 写 字 母 也 更 流 畅 .

HTML 注释

HTML 注 释 具 有 以 下 的 语 法:
?
<!-- this is a comment -->
<!-- and so is this one,
 which occupies more than one line -->
注 释 必 须 不 作 为 文 档 的 一 部 分 被 用 户 代 理 器 渲 染. 类 似 地, 用 户 代 理 器 必 须 不 渲 染 SGML 处 理 指 导 (如 <?full volume>).

如何阅读 HTML DTD

这 份 说 明 明 书 在 每 个 元 素 或 特 性 定 义 处 说 明 DTD 片 断. 因 此, 首 先 是 隐 藏 的 和 阻 止 的, DTD 片 断 给 出 关 于 元 素 和 其 特 性 的 简 明 信 息. 我 们 选 择 包 含 在 这 份 说 明 书 中 的 DTD 片 断 的 超 过 更 多 相 宜 性 的 搜 寻, 但 在 元 素 描 述 里 有 或 多 或 少 的 精 确 含 义. 几 乎 所 有 的 定 义 使 用 了 充 分 的 英 语 来 使 它 们 具 有 全 面 性, 对 于 那 些 需 要 定 义 信 息 的 人 们, 我 们 完 成 了 这 篇 关 于 阅 读 HTML DTD 的 规 格 书.

封闭级别和内层元素

当 其 它 的 元 素 被 叫 做 "内 层 (inline)" (也 称 之 为 "文 本 级 (text level)")时 一 定 的 HTML 元 素 被 叫 做 "block level (封 闭 级)". 它 们 之 间 的 区 别 有 数 个:
内容模型
通 常, 封 闭 级 元 素 可 以 包 含 内 层 元 素 和 其 它 的 封 闭 级 元 素. 通 常, 内 层 元 素 只 能 包 含 数 据 和 其 它 内 层 元 素. 在 结 构 的 继 承 方 面 有 一 个 概 念 就 是 封 闭 级 建 立 较 之 于 内 层 元 素 的 "更 大" 的 结 构.
格式
缺 省 的, 封 闭 级 元 素 比 内 层 元 素 更 格 式 化. 封 闭 级 元 素 通 常 以 新 的 一 行 开 始, 而 内 层 元 素 则 不. 封 闭 级 元 素 结 束 一 个 未 终 止 的 段 落. 这 能 够 使 你 在 某 些 情 况 下 省 略 段 落 的 结 束 标 记.
方向性
由 于 技 术 的 原 因 包 括 [UNICODE] 双 向 运 算 法 则, 封 闭 级 和 内 层 元 素 在 如 何 继 承 方 向 信 息 上 有 所 不 同. 关 于 细 节, 请 参 见 文本方向的继承 部 分.
风 格 提 供 指 定 任 意 专 制 的 元 素 的 渲 染 方 法, 包 括 一 个 元 素 是 渲 染 为 封 闭 的 还 是 内 层 的. 在 某 些 情 况 下, 如 一 个 列 表 元 素 的 内 层 风 格, 这 是 相 宜 的, 但 通 常 的 说 法 是 不 鼓 励 作 者 以 这 种 方 法 超 越 HTML 元 素 的 约 定 解 译.

封 闭 级 的 和 内 层 元 素 的 典 型 展 现 习 惯 的 轮 替 也 有 一 个 对 于 双 向 文 本 运 算 法 则 的 冲 击. 参 见 风格页对于双向性的影响 章 节 获 得 更 多 信 息.

DTD 注释

在 DTD 中, 注 释 可 以 单 独 存 在 一 行 或 更 多 行 中. 在 DTD 中, 注 释 通 过 一 对 "--" 符 号 来 包 含, 如.
<!ELEMENT PARAM - O EMPTY -- named property value -->
这 里, 注 释 "named property value" 解 释 了 PARAM 元 素 的 使 用. HTML 的 DTD 注 释 没 有 标 准 的 值.

条目定义

HTML DTD 开 始 于 一 系 列 的 条 目 定 义. 一 个条 目 定 义 (不 要 与 SGML 条 目 混 淆) 这 下 为 一 种 可 以 DTD 任 意 地 方 扩 展 的 宏. 当 这 个 宏 通 过 名 称 在 DTD 中 被 指 定, 它 扩 展 为 一 个 字 符 串.

一 个 条 目 定 义 以 关 键 词 <!ENTITY % 开 始 后 随 条 目 名 称, 引 号 包 括 了 要 扩 展 的 条 目, 最 后 用 一 个 结 束 符 >. 下 面 的 例 程 定 义 了 一 个 %font 条 目 并 将 被扩 展. <!ENTITY % font "TT | I | B | U | S | BIG | SMALL"> 条 目 扩 展 的 字 串 可 以 包 含 其 它 的 条 目 名 称. 这 些 名 称 的 户 展 是 恢 复 性 的. 下 在 的 例 程 中, %inline 条 目 被 定 义 为 包 含 %font, %phrase, %special%formctrl 条 目. <!ENTITY % inline "#PCDATA | %font | %phrase | %special | %formctrl">

你 将 会 频 繁 地 遇 到 两 种 DTD 条 目 在 HTML DTD 中: %inline 和 %block. 它 们 在 内 容 模 块 包 含 内 层 或 封 闭 元 素 时 被 使 用.

元素定义

HTML DTD 的 主 体 由 元 素 定 义 和 它 们 的 特 性 组 成. <!ELEMENT> 关 键 词 以 一 个 元 素 定 义 开 始 并 以 > 字 符 结 束. 在 此 之 间 则 定 义 了:
  1. 元 素 的 名 称.
  2. 元 素 的 结 束 标 记 是 否 是 可 选 的. 在 元 素 名 称 后 面 有 两 个 短 横 则 表 示 开 始 标 记 和 结 束 标 记 都 是 强 制 性 的. 一 个 后 随 字 母 "O" (不 是 零) 的 短 横 意 味 着 结 束 标 记 可 被 省 略. 一 对 字 母 "O" 则 意 味 着 开 始 标 记 和 结 束 标 记 均 可 省 略.
  3. 元 素 的 内 容, 如 果 有 的 话, 一 个 元 素 的 允 许 的 内 容 被 叫 做内 容 模 板. 没 有 内 容 的 元 素 被 叫 做 元 素. 空 元 素 以 关 键 词 "EMPTY" 定 义.
在 此 例 中:
 <!ELEMENT UL - - (LI)+>
  • 被 定 义 的 元 素 是 UL.
  • 两 个 短 横 指 开 始 标 记 和 结 束 标 记 都 是 必 须 的.
  • 这 个 元 素 的 内 容 模 板 被 定 义 为 "至 少 一 个 LI 元 素". 我 们 下 机 讨 论 内 容 模 板 的 细 节.
这 个 例 程 说 明 空 元 素 的 定 义:
 <!ELEMENT IMG - O EMPTY>
  • 被 定 义 的 元 素 是 IMG.
  • 后 随 一 个 "O" 的 短 横 意 味 着 结 束 标 记 可 以 被 省 略, 但 要 与 内 容 模 板 "EMPTY" 一 起 出 现, 这 加 强 了 结 束 标 记 必 须 省 略 的 法 则.
  • "EMPTY" 关 键 词 的 意 思 是 必 须 没 有 内 容.

内容模板定义

内 容 模 板 描 更 述 了 元 素 中 可 以 包 含 些 什 么. 内 容 定 义 可 以 包 括:
  • 允 许 或 禁 止 元 素 的 名 称 (例如 UL 元 素 包 含 一 个 LI 元 素 实 例).
  • DTD 条 目 (如 LABEL 元 素 包 含 %inline 条 目 实 例).
  • 文 档 文 本 (指 通 过 SGML "#PCDATA" 结 构). 文 本 可 以 包 含 数字和命名字符条目. 以 &amp; 开 始 呼 叫 并 以 分 号 结 尾 (如 "Herg&eacute;'s adventures of Tintin" 包 含了 "acute e" 字 符 的 命 名 字 符 条 目).

内 容 模 板 使 用 下 列 的 语 法 来 定 义 哪些 标 记 是 元 素 内 容 允 许:

( ... )
定 义 一 组.
A | B
A 和 B 两 者 均 允 许, 并 可 以 按 任 何 次 序.
A , B
A 必 须 出 现 在 B 之 前.
A & B
A 和 B 两 次 必 须 出 现 一 个, 但 可 以 按 任 何 次 序.
A
A 可 以 出 现 零 或 一 次.
A*
A 可 以 出 现 零 或 更 多 次
A+
A 可 以 出 现 一 次 或 更 多 次
这 里 是 一 些 来 自 于 HTML DTD 的 例 程:
<!ELEMENT SELECT - - (OPTION+)>

SELECT 元 素 必 须 包 含 一 个 或 更 多 的 OPTION 元 素.

<!ELEMENT DL - - (DT|DD)+>

DL 元 素 必 须 按 任 何 次 序 包 含 一 个 或 更 多 的 DTDD 元 素.

<!ELEMENT OPTION - O (#PCDATA)*>

OPTION 元 素 只 能 包 含 文 字 和 条 目, 如 &amp;

少 数 HTML 元 素 使 用 一 种 典 额 外 的 SGML 功 能 来 从 内 容 模 板 中 排除 一 个 的 元 素. 排 除 的 元 素 以 一 个 短 横 开 始. 显 式 地 从 包 含 中 减 去 排 除 的. 在 此 例 中, -(A) 指 出 元 素 A 不 能 包 含 于 另 个 A 元 素 (就 是 说 锚 点 不 能 嵌 套).
 <!ELEMENT A - - (%text)* -(A)>
注 意 那 个 A 元 素 是 DTD %inline 条 目 的 一 部 分, 但 被 显 式 地 因 为 -(A) 被 排 除 了.

类 似 的, 下 例 的 FORM 定 义 阻 止 表 单 的 嵌 套:

 <!ELEMENT FORM - - %block -(FORM)>

特性定义

<!ATTLIST> 关 键 词 开 始 一 个 元 素 可 以 使 用 的 特 性 的 定 义. 下 面 是 正 在 讨 论 的 元 素 的 特 性 定 义 列 表. 一 个 特 性 定 义 具 有 三 层 涵 义:
  • 一 个 特 性 名 称.
  • 特 性 值 的 类 型 或 一 个 显 式 的 可 能 的 值 的 集 合. 在 DTD 中 显 式 值 定 义 是 大 小 写 无 关 的.<!-- note that this is according to the SGML spec, but doesn't take into account problems with Unicode, avoided here because HTML sticks to ASCII -->
  • 不 论 特 性 的 缺 省 值 是 否 是 隐 式 的 (关 键 词 "#IMPLIED"), 一 直 需 要 (关 键 词 "#REQUIRED") 还 是 或 组 合 后 给 出 值 (关 键 词 "#FIXED"); 在 这 些 情 况 下 缺 省 值 必 须 由 用 户 代 理 器 提 供 (在 某 些 情 况 下 通 过 从 父 元 素 继 承 而 来). 某 些 元 素 显 示 地 指 定 特 性 元 素 的 缺 省 值.
在 此 例 中, name 特 性 为 MAP 元 素 而 定 义. 这 个 特 性 对 于 此 元 素 是 可 选 的.
<!ATTLIST MAP
 name CDATA #IMPLIED
?>
这 个 特 性 允 许 的 值 的 类 型 为 CDATA, 一 种 SGML 数 据 类 型. CDATA 是 一 种 可 以 包 含 字符条目 的 文 本. 关 于 更 多 的 "CDATA", "NAME", "ID" 和 共 它 的 数 据 类 型 的 信 息, 请 参 见 HTML 数据类型 章 节. 下 面 的 例 程 说 明 了 可 能 的 特 性 定 义:
rowspan NUMBER 1 -- number of rows spanned by cell --
http-equiv?NAME #IMPLIED?-- HTTP response header name?--
id ID #IMPLIED?-- document-wide unique id --?
valign (top|middle|bottom|baseline) #IMPLIED
rowspan 特 性 需 要 NUMBER 类 型 的 值. 缺 省 值 "1" 被 显 式 地 给 出. 可 选 http-equiv 特 性 需 要 NAME 类 型 的 值. 可 选 特 性 id 需 要 ID 类 型 的 值. 可 选特 性 valign 被 考 虑 为 从 集 {top, middle, bottom, baseline}中 取 得 值.

在特性定义中的DTD 条目

特 性 定 义 也 可 以 包 含 DTD 元 素. 在 此 例 中, 我 们 看 到 LINK 元 素 的 特 性 定 义 列 表 element begins with the %attrs entity.
<!ATTLIST LINK
?%attrs; -- id, class, style, lang, dir, title --
?href %URL #IMPLIED?-- URL for linked resource --
?...more of the definition...
?>
%attrs 条 目 扩 展 为:
<!ATTLIST P
?id ID #IMPLIED?-- document-wide unique id --
?class CDATA #IMPLIED?-- comma list of class values --
?style CDATA #IMPLIED?-- associated style info --
?title CDATA #IMPLIED?-- advisory title/amplification --?
?lang NAME #IMPLIED?-- [RFC1766] language value --
?dir (ltr|rtl)?#IMPLIED?-- direction for weak/neutral text --
?align (left|center|right|justify)?#IMPLIED
?>
%attrs 条 目 被 合 适 地 定 义 了 大 多 数 HTML 元 素 的 七 种 特 性.

类 似 的, DTD 定 义 了 作 为 护 展 为 CDATA 的 %URL 条 目.

<!ENTITY % URL "CDATA"
 -- The term URL means a CDATA attribute
 whose value is a Uniform Resource Locator,
 See [RFC1808] and [RFC1738]
 -->
这 个 例 程 说 明, 这 个%URL 条 目 提 供 DTD 读 者 更 多 的 特 性 期 望 的 数 据 类 型 信 息. 类 似 的 条 目 定 义 为 %color, %Content-Type, %Length, %Pixels 等 等.

布尔特性

某 些 特 性 担 任 布 尔 特 性 的 角 色 (如 selected). 它 们 在 一 个 元 素 的 开 始 标 记 中 的 出 现 暗 示 特 性 值 为 "true". 它 们 缺 席 则 隐 式 表 示 "false".

布 尔 特 性 可 以 有 一 个 合 法 的 简 单 值: 特 性 名 称 本 身.(如 selected="selected"). 这 个 例 程 定 义 了 selected 特 性 为 一 个 布 尔 特 性.

selected (selected)?#IMPLIED?-- reduced interitem spacing --
这 个 特 性 通 过 出 现 于 元 素 开 始 标 记 被 设 为 "true":
<OPTION selected="selected">
...contents...
<OPTION>
最 小 化 布 尔 特 性 在 HTML 中, 布 尔 特 性 可 能 出 现 在 一 个 "最 小 化 表 单" -- 特 性 的 值 出 现 于 元 素 的 开 始 标 记. 因 此:
<OPTION selected>
替 代 为
<OPTION selected="selected">
作 者 应 当 知 道 许 多 用 户 代 理 器 只 识 别 最 小 化 表 单 而 非 完 整 表 单.
前页 | 后页 | 目录 | 元素 | 特性