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

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

SGML简要指导

目录
  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.0DTD包含在这份手册中,在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 NUMBER1--number of rows spanned by cell --
http-equiv?NAME#IMPLIED?--HTTPresponse 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?--URLfor 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">
作者应当知道许多用户代理器只识别最小化表单而非 完整表单.
前页|后页| 目录|元素| 特性